FetchTransactionsProtocol(requests: Set<SecureHash>, otherSide: Party)
Given a set of tx hashes (IDs), either loads them from local disk or asks the remote peer to provide them.
A malicious response in which the data provided by the remote peer does not hash to the requested hash results in FetchDataProtocol.DownloadedVsRequestedDataMismatch being thrown. If the remote peer doesnt have an entry, it results in a FetchDataProtocol.HashNotFound exception. Note that returned transactions are not inserted into the database, because its up to the caller to actually verify the transactions are valid.