I have done thread analysis using 2 different software packages...2D and 3D....not aerospace applications. Unfortunately, neither of these packages were Nastran-based codes, so I can't help you with specifics.
Contact elements really won't work because of the required connectivity and the way they "load up". You need some type of surface contact algorithm that takes into account penetration of one surface through another and the resulting force required to make sure that it doesn't penetrate. Ideally, you would like it to account for friction, but this isn't an easy calculation.
2D-axisymmetric works pretty well to get the load path, but will likely over-predict stress by up to, in general, about 30% (please note in general...just a "ballpark").
The jump to 3-D is difficult and requires some serious computing power. It is easier if you are careful with your modeling approach. Depending on your software, you want to minimize how many surfaces you have to designate for contact and rotate your thread through a minimum distance if you are checking the fit-up stresses. If you are just looking at in-service and ignoring pre-stress (probably not a good assumption, but sometimes necessary) then you just need a lot of computer power.