It’s indeed good to do this one rig at a time.
For then you don’t bother Rhino with having to search for possible intersections with parts you alreasy know do not intersect.
However the process is time consuming because for each pair of intersecting faces Rhino needs to calculate the intersecting curve and needs to trim both faces accordingly.
To speed these calculations up you can firstly make the input surfaces as simple as possible.
So your orange surfaces ( finger prints I assume) that are flowed from a flat input should be as sinple as possible.
What I have done in the past was to make a flat mesh from the base pattern geometry
Then flow the mesh onto the 3D surface.
From there, offset the mesh to give the thickness and convert to nurbs for your boolean.
I’m short in time so I hope this is clear.
The reason I suggest to use meshes is that they do not get more complex when flowing and I assume you will need a mesh as output in the end so you can setup the mesh to be fine enough for your eventual mesh export.
Another way to speed up the booleans is to increase the file unit absolute tolerance. If you set a larger file tolerance the intersection calculations won’t need to be as precise and they will take less time.
Be aware that it can introduce errors when you set it too high. However is this is your final step in the modeling process, it will likely be OK to increase the tolerance temporarily to allow for a faster booleans.
Hope this helps