For my understanding, what you’re describing is not exactly the same as what you’re sketching in pseudocode. Applying fxs per grain – separate the output from other grain/fx outputs and then mixing – is what PbindFx is doing (and needs a lot of bus management to be done behind the scenes).
In your example, you would rather apply fx(s) to grain streams, which is certainly possible and much easier to accomplish. Actually, you already suggested it yourself: you can work with multichannel buses. @scztt suggested such strategies with TGrains.
See also my recent example in this thread: Real-Time Attack and Decay Control of grain envelope for Granular Synthesis - #5 by dkmayer You could route the signals grains
or sig
to a multichannel bus (your fx ins). Similar can be done with DXEnvFan. The Buffer Granulation Ex. 1f does such in one SynthDef, but you can also modularize it (again with sending to multichannel buses before mixing).