Yeah, the order of matrix multiplications can give a completely different result, so that's one thing to keep in mind. Another issue is if changing the transform of a parent joint will automatically update the transforms of its child joints, if not you're going to have to do some more complicated algebra. In any case, I…
How about you have one free-flying parent joint, a helper joint, and a scripted button to automatically keyframe all of its direct child joints (you only need to keyframe them, as their own children will follow along) with the inverse transform of how they are transformed after you change the pivot? In other words, you…