v2.16 had all the NCrunch modules stored in the root installation directory. So I guess reverting back to 2.16 would put in place the same workaround you'd already discovered (moving the MSTest module to the root install path). In v2.17 they were moved into their own subdirectories to make way for the new NUnit integration.
The area NCrunch is failing is inside a temporary application domain it creates within the engine process. This app domain is used to prepare a dynamically constructed assembly used for MSTest execution. Why the application domain would fail to load the assembly makes no sense - we need to get more information about the loading action.
I'm wondering if we could try turning on Fusion logging on your system, then finding the logs for the loading of the MSTest module. See here for how to do this -
https://stackoverflow.com/questions/255669/how-to-enable-assembly-bind-failure-logging-fusion-in-net.
When the logging is enabled, you'll need to run NCrunch through the failure case, then find the log file for the failed loading of the nCrunch.Module.MSTest.dll file inside the nCrunch.EngineHost.exe process. If you can copy/paste the contents of the log to here, we might find a useful clue as to why this is failing.
Of course, if you want, you can still just keep going with the workaround you had in place previously (copying the file to the root directory). I'd still really like to know why this is failing though :)