NENastran supports 4 possible types of contact in their V9 release (general, slide, weld, rough) and 2 possible types in their V8.4 release (general and weld, but you can do all 4 by just adjusting the parameters). It is not difficult at all. In fact I heard they will have a fully automated surface contact capability in V9 which does not require the user to define the contact surfaces manual (it automatically finds them). This will really be helpful.
As for friction, you just specify the coefficient. Leave the stiffness for stick value blank. The program will calculate the best value. Also in V9 it will allow you to specify a maximum slick displacement just like they do a maximum acceptable penetration displacement.