Would your "Manager of the Queues" be an administrative function or a user view of "things that didn't finish properly and need attention?"
You could use the Endpoint Receive function to enumerate the messages in the queue (just return null from the Func<object, Action<object>> call, which would give you every message in the queue. Then when you actually want to receive you could use that same function, but that's kind of annoying.
The Transport deals with the messages directly (the MSMQ Message object), but you would have to deserialize them yourself (not difficult). Here though you would have the transport Id if you want to build a function around the management object or something to move a message between queues via the transport (using the transport message Id).
Just some random thoughts. There is a MsmqEndpointManagement class that has some functions like creating and removing queues that would seem like a place for this type of functionality but I'm trying to think about it.