I'm not sure if we are understanding each other. I thought you said on collision works but reduces performance of your game?
"overlap" + "trigger once" is the same as "on collision".
Well, now that I think about it, the checking of team might not work because it's the same object.
Using collision or overlap is not your problem. The issue is how to differentiate/determine the team values.
Can't you try using an additional variable?
Add another var called TeamDetector
like all objects that are Team 1 will have TeamDetector values of 1-20
all objects that are Team 2 will have TeamDetector values of 21-40
and so on
If that doesn't work, and you already have them in layout at start (you don't create/spawn them at runtime), check and use all their UID or IID to differentiate them from each other.
I'm just posting from what I think, never tried it myself.