As you realized, startProcess() (and all the api's methods) are synchronous. This is not actually a problem for long running processes because of the persistence mechanism implemented by jbpm5
For multiple processes running at the same time you will need to execute startProcess() in different threads.
JBPM5 doesn't support real parallel (multi-threaded) flow execution. So, every time you use a diverge gateway or a multiple-instance node, flows will be executed one at a time.
Maybe you can share your requisites with us so we can help you in find the best way to fulfill them.