Geometry should not be an issue here, glass shaders are noisy by nature and will probably have a bigger impact in your scene. If you use this technique and take advantage of instancing feature the memory consumption benefits should help mitigate the number of objects.
Make a simple box mesh with the desired dimensions of your brick, make sure you apply the scale.
Add three material slots with the following order: Clear Glass, Mortar, Frosted Glass.
Create materials accordingly as desired and assign clear glass to both front and back faces, and mortar to the remaining four rim faces around them. Two simple glass shader with different roughness values should suffice for both glass materials.
Now add two modifiers. One Solidify with the desired thickness; adjust the material offset to $2$, so the inner layer becomes all frosted glass.
Now add a Bevel modifier, to add some roundness; adjust radius as desired.
Now array the bricks with whichever method you like.
- Either use an Array modifier: Quick and simple, no optimization and higher memory use.
- Manually duplicate the object around: Instancing gives memory benefits, but ads lots of individual objects which may slow down the viewport and pollute your scene, making it harder to manage.
- Use a particle system/Duplifaces. Array a simple plane and use either particles or duplifaces to distribute bricks along the faces. Harder to setup, memory benefits, and less individual objects to manage in the scene, but may still slow down the viewport.