I don't really know the answer. My largest assemblies are generally under 100 parts, with maybe 10 sub assemblies thrown in there. I use virtual parts sometimes in concept/prototype designs. Some of the conceptual design stuff gets kind of messy.
I've found with myself, that when a virtual part doesn't work, or a flexible sub is going awry, the problem is pebkac (problem exists between keyboard and chair), in other words, the problem is myself, and how I set something up.
On your making parts or subs virtual, I would guess the less that are virtual the better, since it is my understanding that virtual parts are stored and solved within the assembly, so this would make more work for the assembly file. Sounds like your problem is with virtual components, since you mention them a few times. Maybe try and avoid them and see if this helps?
Can you create a small assembly with a repeatable error of what you are seeing and upload it?