For that example to come out right in terms of which vertex groups are connected to what, it almost looks like you need to add an extra joint right at the wrist to solve the "last joint" problem--let's call it A. Then your bones become 13-A in the hand (blue), A-12 in the forearm (green), and 12-11 in the upper arm (red), and all the attachments make sense.
Aren't the same joints in fairly consistent positions inside the data for all the models? That should make it possible to interpolate extras in the same locations for everyone. (Worst case, it might be necessary to flag some joint locations somehow.)
Also, I wonder if the existence of the two shoulder joints isn't due to the original animation code's insistence on rotating each joint in only one direction at a time, as I seem to recall was the case? That would require one joint to rotate the arm around its long axis and another to move it up and down relative to the model, but I'm not sure if that makes sense from a rigging point of view. That would allow 11 and 10 to be consolidated to one joint.