That would be my question too. I know a little (but not much)
about hardening code, and I am aware of some of the issues if there
can be unexpected outside influences on your program (such as
radiation or hardware issues causing changes to memory locations).
I can't see any way in which some sort of general duplication of
variables would help.
The 'proper' way to do it is with C macro's that can be used to
declare, increment, and decrement, values in a redundnat structure
containing both the inverted value as well as non-inverted value, a
macro for setting the value (which also sets the inverted value), and
a macro (and error handling) for checking the value and ensuring that
it is the inverse of the inverted-values before it is used ..