Hi Jan,
Note that RuntimeService#signalEventReceived and RuntimeService#signal do two different things. The former triggers all matching BPMN signal event subscriptions, the latter triggers a single execution. The second method is not related to a BPMN construct and leaks internal concepts to the public API in my opinion (which is probably also why the documentation is poor). For a given execution, it calls the ActivityBehavior's #signal method that receives the signalData object. The implementation can do anything with that object. I think all the BPMN behaviors ignore it, including the IntermediateCatchEventActivityBehavior that implements a catching signal event. Thus, signalData won't help you here.
Why don't you want to use process variables for that?
Cheers,
Thorben