I don't know if this is simple enough for you, but this is how you can do it:
Say we start with this:
We have an animated armature, and an armature with a different hierarchy, but with a correspondence between bones. In this case, I've named the original bones "old1" and "old2" while I've named the new bones "new1" and "new2". Note that the numbers represent the correspondence to the old hierarchy: new1 is the child of new2. Importantly, none of the bones in the new armature have the same exact name as the bones in the old armature, which will be important when we join the armatures:
I've created a copy of our new armature, joined it to the old armature, and assigned the bones from the new armature to new parents. Notice the outliner: new1 is parented to old1, and new2 is parented to old2.
Now let's make some constraints for bones in our new armature:
Each bone in our new armature gets a copy transforms constraint targeting the corresponding copy in the old armature. In this case, I've made these constraints operate in pose->pose space; if the armatures were in the same location, I would have used world->world which is fewer clicks, but I need to keep the armatures in different places so you can continue to see what's going on. Next we use a "bake action" operation on our new armature:
I've run a Bake Action with visual keying and clear constraints. That writes the transform of the constraint into the f-curve of the animation. At this point, we can play our animations side-by-side and see that they are identical.
Notice the graph editor. I started with two keyframes; now I have a keyframe for every single frame! Is that really necessary? Unfortunately, yes, it is. Interpolation between keyframes depends on the hierarchy. Consider our new2 bone. Its head is no longer being rotated by anything, so its transform requires position. But that position needs to move through the arc described by the tail of old2. So we can't represent that position with only 2 keyframes the way that we can describe the rotation of old2 with only 2 keyframes. Although in this case, we could still get awfully close by adjusting the handles; we could follow this up with a clean keyframes operation if we really need to. Not all situations will be so simple to manage though.
Notice that a lot of this could be simplified dramatically with scripting. If we use names to indicate correspondences, scripts could use those names to create the parenting and constraint relationships. I would expect somebody, somewhere, to have made an addon or script that does this automatically. However, I'm not personally aware of any.