You might be able to set up all of your surface shader networks in the main (top-level) node window, then link to them from the objects' internal networks. That way you'd have to visit the object's internal network only once, to establish the links. Theoretically, anyway.
It would make it simple to share shaders across objects and you wouldn't be at risk of deleting them accidentally when objects are replaced. (Done that a few times.
) The shader networks could be put in a "Materials" group or some such . . . think Hypershade if you're a Maya user.
I started messing around with this kind of arrangement but never followed through. Seems like it would take a lot of discipline but it might be worth the effort.