You might need to consider if you need this much detail for renderings.
Each hole adds a lot of faces to the Rendermesh, regardless of it being a Block or not it needs to be rendered onscreen as a mesh.
So in you example of the perforated shelve backs, I would try and use an image texture to suggest the holes. Eeither by applying a texture with black/drak dorts or by using a dotted pattern as transparency map.
As for the lane disks; you could use texturing as well or remove the inner holes, as they are hardly visible anyway. There is no difference in creating an array of holes or booleans. However, in the example of the disk I would suggest to create separate geometry for the disk, rim and fins. I would not boolean them into one polysurface but rather group them (the fins could be a single fin for both sides crossing through the disk). If you would boolean them into one polysurface, it would add a lot of extra mesh faces to define the intersecting edges)
Last but not least I suggest to try and see how low of a custom mesh settings you can create for objects.
This is done at the object properties panel: