OK, it looks like I self-answered my question above.
Now, I understand why Krisv V. said that use kession.signalEvent for the external aync event.
So, I used
ksession.signalEvent(eventType, eventData); // without the top-level restoredProcessInstanceId.
Then, the jBPM 5 automatically finds the corresponding sub-process with the intermediate message event.
It worked as long as I don't share the ksession with another top-level bpmn process.
bwj.