Thanks Mauricio!
Got me doing some more reading and a new (to me) session bean type, the singleton session bean, seems to fit the bill for what I want. Can be annotated to startup when the server deploys the ear and seems a good place to do the initialisation.
Not sure about the clustering solution as I would really want workflow sessions distributed across multiple nodes and if a node fails for the flows on that node to be re-started on other nodes in the cluster. But that is all for a future release, our product currently runs in a warm(ish) standby failover configuration and that won't change for a while.