This sounds likely. I've not tried it, though.
The drawback of shared AppDomain is that the add-in is loaded into the same AppDomain, and it cannot be unloaded until the Application unloads.
// Activate add-in in the same application domain.
IEntryPoint AddIn =
selectedToken.Activate<IEntryPoint>(ApplicationAppDom);
If this is a desireable scenario, I suppose that the workaround would be to test for the common AppDomain and hook up without the generic proxy for the shared AppDomain case. This would be another situation where a custom contract implementation would workaround and still preserve versioning independence -- I'll try it.