I'm pretty sure this isn't allowed for a lot of reasons.
First off, let's say you have 2 assemblies. The first defines Animal and has a descendant called Dog. The second defines Animal. Both assemblies use the same namespace.
During runtime what happens when you declare var B = new Dog();
? Should the code swap the second assembly's version of Animal in there or not?
What if you declare var A = new Animal();
? IMHO, the code should simply implode to prevent it.
From a security perspective you would absolutely not want someone to simply link in another assembly that defines the same namespace as your library to swap out a particular class.
Point is, by linking to both physical assemblies containing the exact same types you are introducing a huge problem that there is no real way to solve. Change your code to work the same way as the supplier.