I don't exactly know what you mean by how they are distributed..
There is clustering, mirroring of all queues to all nodes in cluster and clients declare queues on demand.
We only use one endpoint to both consume and publish. Connecting to the other node via the load balancer would result in new messages being published to the losing side. The Dynamic shovel seems to be the right approach.
Does the shovel support defining queue names as matching a regex?