This should reduce the memory usage of the application by dividing the size of unserialized transactions by 2, and saves a `bytes.fromhex(..)` conversion in the deserialization function.
The `bytes.fromhex` conversion now happens at the I/O layer (opening wallet files, receiving transactions from the network, copy-pasting unsigned hex transactions), where the conversion cost probably does not make a difference as the process is I/O bound.