A bit of an update, hopefully someone can help me finish this thing as my head is about to explode.
So anyway, I decided to go ahead with decompiling the model. When I imported it in XSI, I found out that it has everything except the bones - it even has those... I don't know what they're called, the little crosses that connect the various bones. So anyway, my original intention was to rig the mesh manually, but that failed since the weightmap generated by the enveloping is really bad (in short, moving one arm causes about half of the body to move - it's really hard to fix too.)
With that out of the question, I noticed that the decompiled soldier model has a perfectly good weightmap. My next idea was to repeat the manual rigging, but in the end, delete the generated weightmap, and import the one from the original decompiled model. Which also failed, since the names of the bones don't match (bip_head as opposed to bip01_head1). So unless there's an easy way to change the name of every bone in the rig to match those in the original model, I don't have a clue what to do next.
Someone in the chat room mentioned that the missing bones problem is only in XSI - is that true, and do other modelling packages work fine with decompiled models? (by "fine" I mean not omitting the skeleton on load)
PS I actually found a way to freeze a prop_dynamic's animation, but I found out that I can't scale the model's rig through the .qc - the $scale command scales only the mesh. The result -
http://i35.tinypic.com/4qhjqv.jpg (double-sized model with a normal-sized rig)
So I guess that's not an option either.