T2972
Depends on D13366
Ended up needing to put a lot into this due to weirdly large variety of etoken txs in the mocks. Functions would fail without some of these patches and they would have been cumbersome to roll back into previous diffs on this stack.
Since this diff is already rebuilt into a stack, and the unit tests are good vs what this app does, I recommend reviewing it as is.