With the assistance of a colleague I resolved this issue by using two projects which referenced the same classes but utilized different references.
First, I removed the project from the solution. I then copied the csproj file and renamed each with the version numbers:
- myProject 2015.csproj
- myProject 2016.csproj
Next I added each project back to the solution in VS. I like to keep a folder with referenced DLLs with the project so they are checked-in to TFS and another developer has the correct versions referenced when pulling down the project. So I created a v2015 and v2016 folder for the respective projects placing the appropriate DLLs in each. I then removed the existing references in the projects and re-added them, pointing to the files in the version-ed folders. Resulting project tree.
Now I still have two additional build configurations, one for each version. I made sure each mapped to version-ed bin folders (bin\2015 & bin\2016). I also added an AssemblyName tag in the csproj files so that my DLL for each build gets a name that includes the version number. Finally, in the Build Configuration Manager, I selected only the 2015 project for the 2015 build and likewise for the 2016 build. Here is the build config section of the csproj files.
Now, when I open a class in the 2015 project and then try to open the same class in the 2016 project, it opens the same class file in the IDE.
UPDATE 11/06/2019: I have been informed the visual studio project type of Shared Project is for exactly this scenario. I have created a new solution which has one shared project that holds all my classes. Then I have multiple class library projects for each version I need built. Each of these projects references the shared project and has its own references to each third party versioned DLL it utilizes. This solution has been much better suited to including a Unit Test project as well.