Hey Todd,
The more 'computer science-y' answer is to store a reference to each application instance in your object pointer cluster such that each object's methods know the context in which they are supposed to be running: namely, the application instance that created that object. I just learned a similar lesson, and I actually think I like LV better this way. I think the tools vendors (VIE included) have some catching up to do to thoroughly support 8.0, though.
Just a thought - if you had a 'readme' diagram in a central application reference (project) and instantiated all of your objects from said project, then you might be OK. a) all VIs would be in memory on the 'main' project and b) creating all objects in the main project would put them in the proper memory context. Hmm, no, I think that's not good enough. I presume you have methods of project A called in project B and vice-versa. If those method calls were now made by reference with the main project app reference used, then this method seems sound. Now THAT's a pain - use Call By Reference everywhere instead of VIs on the block diagram. OK, maybe I don't like it better this way. It's really analogous to proxying method calls for GOOP objects between PCs on a network.
The way I think NI envisioned us using a project was to organize the information for an app on a 1-1 basis. Anything different and your mileage may vary.
Dave.