[SPIKE] instantiate TxState lazily

o Not possible right now due to interaction with legacy state
Instantiate TxState lazily

o Replace TxState.Factory with TxState.Holder
o Make TxState clients check if state.hasTxStateWithChanges() to avoid object instantiation