jBPM can easily handle this volume of async processes. However, do not start an external process from an ActionHandler then sit in an Object.wait() call. One way to implement this is to use a State node to model the external process and start the external process by attaching an action on the node-enter event. You ActionHandler on the node-enter event should just start the external process then exit. Process execution will then pause at this State node.
To continue process execution you will have to write code that runs independent of jBPM, like a Unix daemon. This code will be responsible for notifying jBPM when the external process has completed. It will retrieve the State node that is paused (suspended) then call signal() on it to move process execution forward.