Well, Pi-C.
I've rewritten everything, and it all works except I, Robot. :( I'm looking in DataRawSerpent, and my changes are accurately reflected in the custom character there, but they just aren't showing up in-game. I honestly have no idea what's going on, since my code works on so many different entities, but not this one.
Sorry, I've got a hunch this may have to do with how I create the character. There's two scenarios to consider: IRobot will replace the default character if no character-selector mod is active, or it will keep both the new and the default character if there is a character-selector mod.
In data.lua, I create a table with the properties I definitely want to keep: that would be sounds and graphics, mainly. Other mods may change things I don't care about, like inventory size, or mining_reach. So I always create my new character with a new name.
In data-updates.lua, other mods have a chance to make changes to the default character. In data-final-fixes.lua, I decide whether I should keep both characters or replace the default. If I replace the default, I copy all properties stored in my table from the new character to the default (thus, I can keep the changes made by other mods to properties I don't care about); if I keep both characters, I copy all properties NOT stored in my table from the default to the new character.
So, you change the new character in data-updates.lua, then I revert your changes in data-final-fixes.lua -- that's the crux of the matter. But it gets even more complicated: As my own character-selector mod (miniMAXIme) depends on other character mods using the procedure described above (so that not every new character replaces the default and you end up with just one alternative character although you've got five active character mods), I've provided a helper mod which already is a dependency of several character mods. Ideally, we should avoid changes in the character mods and try to let the helper mod do everything.
However, you could also move your changes to characters and character-corpses from data-updates.lua to data-final-fixes.lua, and add an optional dependency (it should be OK if it's hidden) on IRobot and any other character mods you want to support, so that they are guaranteed to be finished before you add your changes.