Judging from the huge number of issues that have revolved around the entire vertical-app structure for years now, I'm guessing that this is another of Autodesk's internal problems. Even after all these years, I still don't think they understand what they're trying to do. (Witness the Autodesk Sabotage - er, I mean the Autodesk Shared - directory...)
Personally, I've never liked the vertical-app structure at all, and wish they had not done things that way. But like so many other things in Autocad, it probably seemed like a good idea at the time...
I, too, am at a loss. I've tried late-binding, normal binding, using COM objects, and everything else I can think of, and can find no way around the issue. I'm guessing it's something we just need to wait for Autodesk to fix, if they ever do.
Other than that, the only real solution I see is to just not start up multiple Autodesk products at the same time...
Also, the way I do things in the SincpacC3D, the reference to the application is "remembered" by the framework. So, if you start up Civil-3D first, the SincpacC3D will continue to work even if you later open an instance of Land Desktop. It's only if Land Desktop is already up and running when you first initialize the SincpacC3D that it can't find the correct application instance.