I'd say we modify the UnitOfWork to keep an array of transactions and  move this logic into that class?

ie just have the sender pass in the connection string and ask for a transaction => the uow then checks for existing ones keyed on the conn string and create a new tx/connection as needed?