I hope you don’t mind another option. From some time ago DesignScript imperative code is working, so we can make loops directly with DS code.
The text of the function definition:
def TrimWithAll (Su,CuT:var,RefP:var)
-You have to deal with having to select a point from every curve, that in my opinion is a pain. In a case like this (circles) you can implement in the function to get the center point and have a function that only need the curves.
-The experience until now is that Dynamo is blazing fast managing several simple solids. If I would be you, I will extrude the circles and use difference. You have already solid commands that allow to make Boolean operation with several elements, and you can forget about the reference point. But obviously the element to be trimmed has to be a solid instead of a surface.