On a somewhat related note, any specific reason why turret/beam-lock/free-all only takes a single argument and can't list multiple ships?
Cause they take multiple turrets/beams as arguments.
The way the SEXP system works is that every argument except the last one must be constant. So you can have a SEXP like
SEXP Name
-Ship Name
-Turret
-<more turrets>
but not one like
SEXP Name
-Ship Name
-More Ship Names
-Turrets
Technically you might be able to do the above by checking the return type but it would probably be very messy. What might be possible is to fix the SEXPs to accept a single ship name, wing name, or a team name (friendly, hostile, etc). Not much use in the case of this SEXP though but there are other examples where it might work.
In the end though, it's a lot of work for something you can solve just by using <argument>.