There may be a standard answer for how to handle long-running operations with SOAP. There is definitely a standard answer for how to do it HTTP, which is what your SOAP calls are going over. You are supposed to make one short request to start the action going and then periodically check back to see if it's done. See
this for example.