Replacing sub assemblies with parts while maintaining sanity

I'm currently working on a project with hundreds of parts and well over 1000 instances of parts.

Frequently we want to send a vendor or customer some of the project, but we'd like to hide the internals, for example if we're desiging a hand held optical system, we'd like to send the design company doing the probe the external surfaces of the model while at the same not sharing the internals. Likewise, we'd like to send the designed probe out without showing its internal components. Thus far I've maintained an assembly for each and every time I want to send something else, I save the subcomponents as parts (surfaces) and then find and replace or delete and reattach the mates manually to fit the sanitized parts back into the assembly. Then of course I save the assembly as a copy with a version and date.

The problem of course is that nothing is ever updated again and for the next design update, I have to do this again. And this happens for every vendor with different levels of the assembly tree, creating an absolute mess. I know I could clean things up a bit with configurations, but is there any way to do this in a more sane manner within SW? Sort of a pack and go, but dumb down these assemblies?

SolidworksAssemblies