Moving to vault has helped us - however, we have iPart children that become integrated into our assemblies usually because of custom fields (Length, hole counts, etc.). By practice, prior to vault, those types of files were given a part number related to the assembly they were being placed in and were kept with the assembly. This worked great.
Now we are migrating to vault. We are correcting some indiscretions in our vault structure and can't move ipart children.