I don't know if this is any better than your proposed solution, but you could ...
1. Store the activator player's number in a temp variable (Relay -> 4 output signals w/ Player Filters 1-4) -> Set integer 1 for p1, 2 for p2, etc.).
2. Create a Sequencer with an output Signal for each player (1-4), connected in order, with a Play event. Use another Player filter for each to select who to play for. P1 plays P2, P3, P4, etc.
3. Use the temp variable to Change Index on the sequencer to the correct output Signal, then Signal it.
Er, sorry you wouldn't use a second Player Filter in #2. And you could probably just skip the temp variable and go directly into the Sequencer from the Relay.