A system for updating saves would be extremely tedious.
You would have to permanently store the ways to update between versions and you wouldn’t be able to change the system without updating every single old update.
I highly recommend not doing this.
The easiest way to prevent your issue would be to get the data every time rather than saving it.
Don’t save a “Sniper, 40 damage, 200 critical-multiplier” etc.
Instead, save “Sniper” and use that as a key to check what the actual name (the displayed name) and stats are when you load. Just treat the display name as another stat, and keep the row name the same
This would also solve your second problem. The backend name would never change, so you would never have to rename anything.