In house transaction and block types (wrappers)
## What

Currently we are using `monero-serai` directly across multiple crates, this proposal is to create wrapper types in `types` that we use across crates instead. 

## Why

This will allow us to do things like caching the tx hash, we currently do this in the consensus crates, however we also calculate tx hashes in the block downloader, which isn't cached.  

## Where

`types` and anywhere currently using monero-serai

## How

Right now monero-serai is planning a big change to their transaction type seen as we are going to have to make (a lot of) changes for this it makes sense to do this at the same time 
