Storing many instances efficiently
I also work in archviz and would love to hear a solution for this,in my experience having particles does speed up the viewport a little at the expense of slower selection for objects with many particles.

Only alternative I can think of would be using perhaps duplifaces, though you would probably be limited to distributing single objects as opposed to say group instances.

There would have to be a special dummy mesh object where each face would store the location and rotation of each instance, though I am not sure it will bring any viewport performance advantage. You would also probably need a script to create said mesh from existing instances, although creating from scratch would be a little bit easier.