How I'd approach it:
1) UV map whole object at once, top down with a square mapping. It's full of separated elements on the model level so each will be its own island.
2) Scale the mapping to the right size for the texture in the UV Mapping modifier.
3) Randomize UV Island placement in the unwrap using a script, plugin, utility, casting of bones, whatever. Maybe randomize rotations on them in 90 degree increments too for extra umph.
If I wanted to really show off implementing this in a project with outdoor hand laid bricks I might do the following in addition:
4) Detach all the squares to separate elements. (I use the subdivision reversion script, it has a detach function I use for all kinds of things but there are free scripts out there too.)
5) Fire up Soulburn scripts and use the transform randomizer to rotate each script a degree or two in random xyz, or the Edit->Transform Toolbox in Max.
6) Reattach them all. Reflections will look less uniform now because the angles are slightly different. I try not to overdo it, but a little bit goes a long way.
I used it in a simple project I did for a friend who was visualizing some tiles for a candy shop he was designing. (Along with the UV trick above.) You can see the somewhat broken reflections at the various tile intersections. I rotated some of the UV's island 90 degrees for extra randomization. (I'll edit my post above to add that.)
EDIT: Grammar. I got excited there, man I love rendering. Also added steps from previous post.
Best Regards,