Each node should recover its own transactions that it started.
You need to differentiate imported transactions (OTS/JCA inbound)
which will be recovered by the TM that propagated the tx.
Yes. The simplest way to get it to work correctly is to use a GID.
Especially when you might want to run multiple instances on the same server.
The host/sequence number doesn't work:
1) You could have multiple servers on the same host
2) The sequence number can't go backwards
Another solution to the sequence number problem is to persist it in the log, but that
is inefficient and requires early recovery/reading of the logs.
The way to sidestep all problems is to use a singleton transaction manager in the cluster.