I would try to tackle the reqs by creating a local daemon on each machine, that spoke jms locally and then provided persistence.
I would use TCP broadcast to a known port to advertise topics and queue associations to IP addresses and ports. You could then establish direct connections to the advertised ports to publish or subscribe to messages in a transaction.