I succeeded in saving our character but the way I did it was hard-won. I hope this will be helpful to others who learn the hard way that their armature is not setup to be interpreted properly by Unity. Note that I have been advised by a professional that this is over-complicated compared to the minimum that really needed to be done to "save" the character, but the optimal solution apparently does involve a copy-transform rig.
I duplicated the armature I had and removed all the non-deformation bones from it.
Then I cleared all its ("Armature.001") bones' constraints, disconnected and de-parented all of them, and re-parented all of them to the root bone.
I put a "Copy Transform" constraint on the root with the other Armature as the target, but did not set the bone target.
Then I copied that constraint to all other bones at the same time.
One-by-one, I set the bone target to the bone with the same name in the other rig. This took about 10 minutes just to be thorough.
Now I was ready to re-create the actions:
In the Action Editor, I set the active action for each armature to the same action.
With the new armature selected, I clicked the button to make a new action: "ActionName.001"
In pose mode, I selected all bones, set my Keying Set to "LocRotScale", and re-keyed every single frame.
(I did this for every Action).
Through trial-and-error, I determined that I needed to bake these actions one-at-a-time with the following options activated:
- Only Selected (not required, probably)
- Visual Keying (most important)
- Clear Constraints (equally most important :) )
- Overwrite Current Action (preference)
I was only able to remove the constraints ^ and have the new armature continue to respond to the keys when it was done this way. I also remembered to delete the channels belonging to the non-deformation bones that didn't exist anymore. I did this after baking just to make sure it wasn't causing problems.
After clearing constraints, the other actions break. I anticipated this, and every time I baked an action, I saved it in its own file.
Finally, from the file version before all this baking happens, I removed all the actions, deleted the original armature, and appended THE ONE BAKED ACTION from each new file I saved. DO NOT FORGET to append JUST THE ONE YOU BAKED from each file each time, otherwise you will think you messed up when you are just appending the wrong action from the wrong file. Obviously, I got very nervous for a second because I forgot!
When all the animations were appended, I was able to export.
Before I did, I de-parented all meshes and rotated everything about the X-axis by -90 degrees, applied that rotation, and rotated it back 90 degrees. This corrects the axis disparity between Blender and Unity.
Here is evidence of my success (sorry, it was too big to embed):