I might previously have said <cough /> that there is no way to control the number of threads used when using the JAX-WS async client API. Turns out that perhaps I was just being a little bit dense and hadn't noticed the setExecutor(...) method on the Service interface. This doesn't solve all of your problems though as you need to set this for each service instance (This is not really a good thing in a server environment); but if of course more controllable in the JSE case.
Now if I had only worked this out before I flew to Zurich.... then I wouldn't have had the mistake in the slide. Oh well.