eth: refactor tx sending
Refactor sending evm txs so that we store the txs before sending and are accepting of send errors. This avoids a scenario where we send the tx, but still receive an error, perhaps because of a bad connection or other problem with the rpc provider.
Implement a send queue so that the caller doesn't have to wait for the send. This should speed up ticks in core if the rpc provider is functional but slow to respond.
Moving to draft for now. I think there are some good things here, but it doesn't clearly help the issues we see with long ticks in core and there are some potential drawbacks that need more consideration.
One thing I'm very worried about is that we could successfully send a tx, but still see an error from the rpc server for whatever reason or just a poorly-timed disconnect. That would cause some issues up the line, and could be the cause of a couple of reported bugs where redemptions were not properly recorded in core.