Hi Steve,
Correct assumption there, you'll have to use the SubscribingEventProcessor if the Saga instances need to handle events which are not stored in the Event Store.
There is however no mechanism to prevent Saga from executing concurrently between two nodes if the SagaManager receives it's events from a SubscribingEventProcessor.
The segmentation Allard was talking about for a SubscribingEventProcessor is a default 'all-event-segment', as SubscribingEventProcessors aren't capable of being aware of other Event Processor they need to share the stream with like TrackingEventProcessors do.
Then again, an event you filter out which needs to be handled by a Saga, will not end up on both nodes to begin with.
So the concurrency issue would only arise if you have several events in quick successions to one another on both nodes for a single Saga instance.
Tough situation to resolve...with a couple of things I can think off.
Does this shed enough light on the process underneath Steve, or are there more follow up questions you'd like to pose?
Cheers,
Steven