Make TransactionProcessor#process distinguish recoverable (transaction did not apply, but we restored the surface to the previous state and you can keep working on it) and non-recoverable (something terrible happened and your surface is hosed) exceptions.
(Filing as a note to self, see T187690#4046653)