Best place to use a function imo, but the fact is the initial will work, as long as it uses a top tier within the condition to pick.
Remember every time you start a top tier sub-event that does some other picking it forgets what was picked before.
I'm afraid I don't quite understand you (bit short on sleep today, that's probably part of it).
I understand what you are saying about a top-tier event not passing it's pick list to the next event. I'm suggesting an exception to this that is dependent on the event prior, much like an else statement.
An example of where this could be useful is if I want to select all the Foo's that are overlapping Foobar's, and subtract 1 from their health, then select all the Foo's ! overlapping Foobar's and add 1 to their health.
As it stands you COULD accomplish this thru a hack:
--- Foo.health + fooHealthUp
If (Foo overlapping Foobar)
--- Foo.health - (fooHealthUp + fooColDmg)
However, IMHO, this is inelegant and not-at-all-obvious. And if you are doing something more substantial (say moving objects) you are still performing redundant actions.
I don't understand how using a function would help here...?