It should be possible but I think you will have to manually manage activation contexts.
For example, in my proof of concept test a C# Winform app uses a class from a referenced C# Class Library. That class references a C++/CLI class library that loads a native DLL. The test code in the C++/CLI class library uses LoadLibrary to first load version 2.0 of the native DLL from one file system location. It specifies a path in the call to LoadLibrary. An exported function is called that indicates that version 2.0 of the DLL was used. Then the C++/CLI code manually creates and activates an activation context for its preferred DLL, version 1.0. LoadLibrary is called again without specifying a path. This time, the exported function from the preferred version 1.0 is used to resolve the export. The default activation context is then restored and LoadLibrary is called a third time without specifying a path and the exported function from version 2.0 is called again.
And here you can see that both DLLs are loaded in the process -