Feature/add transport structure

We should build this when we send the outbound message, not when we receive the inbound message. `transport_metadata` isn't exactly untrusted, but we can't guarantee that nothing will mangle it (deliberately or accidentally) between the inbound message leaving the transport and the reply reaching the transport.