Performance issues with many objects/large files

That is going to be a challenge with the complexity of the single object that spans all the spheres.

For such a structure I might recommend:

  1. Create a tile that include 1-4 spheres and a small section of the large surface. Then array the resulting tile to get the size of the fina object needed.
  2. For highly complex Boolean structures, the plugin Isopod is able to do this quickly and have the results that are 3dprintable: Isopod - implicit surface tools

Those are the best two strategies I have seen work for these types of models.