When I think of distributed jobs, I think of JMS and MDB.
Rather than using SOAP internally, simply publish a JMS message to the cluster. Since JMS messages are processed asynchronously, unlike SOAP, your SOAP client doesn't need to block for completion.
JMS has a notion of transactions and supports things such as automatic retries. So, if the system goes down, your jobs aren't lost.