singleton allows only one thread to perform operation at a time. So if you have multiple threads that would like to start process via ksession only one will be doing the work and others will be waiting. Then depending on the process definition (like long running activities done synchronously) will lock ksession for longer period of time causing other threads to wait longer.
So that is known limitation rather a bug. You can use other strategies (per request or per process instance) to avoid this synchronization point.