If you really have three JBoss Messaging instances pointed at the same exact database tables, I think this is considered an "out of spec" configuration. Each independent, non-clustered JBoss Messaging instance requires sole access to the underlying database tables. (Clustered JBM's understand that they share the tables with other nodes and are configured with a unique identifier that prevents them from seeing messages from other nodes). If you are going to run three or four independent JBM instances, you might consider giving each JBM instance it's own login credentials and create all of the messaging tables under the default schema for each credential.
You cannot pass messages with the DB, to my knowledge. JBM doesn't appear to requery the DB. It just assumes that since it is the only thing modifying those tables, the tables are consistent with its internal state, where it keeps all messages it is currently processing. For the most part, it issues INSERTs and DELETEs, rarely SELECTs, except at boot to get the initial working set, or when you've exceeded a queue's FullSize. DB message passing saves less work than you think if you mentally draw the sequence diagram for each scenario.
Why not just have Nodes 1 through 3 send messages directly to Node 4? Instead of looking-up the ConnectionFactory on the local JBoss, look-up the ConnectionFactory on JBoss 4, and the rest of your code should function as expected.
This solution, one node playing the dedicated JMS server, is the one we actually decided to implement.
Thanks a lot for the confirmation