I don't think Cisco has a really good solution to this yet. Here is one workaround. Create a translation pattern (*67.XXXXX for five digit dialing, change as appropriate) with Calling Party Transform Mask = ***** and Called Party Transformation = PreDot. The user than dials *67 followed by the IP extension they wish to call. This will block the number from appearing. To block the name, on the Directory Number page define the field "Display (Internal Caller ID) = Unknown Number". Another approach that works for VIP's with secretarys is to put the secretary's number in the "Display (Internal Caller ID)" field. That way when ever the VIP uses the *67 pattern the secretay's number is displayed on the far end.
Downside to this approach is that the user has to remember to dial *67 for ALL internal calls. The other downfall is what if you have hundreds of folks that want to do this, do you create hundreds of translation patterns or tell them that *67 with unknown number is the only workaround.