Best practice for creating many rivet holes etc?

Well, blocks are perfectly valid as 3d objects but they cannot be used to Boolean, and even if they could, it would lead to exactly the same problem as with any other object.

-Pascal