Multiple DLLs can be loaded into the application when their version and signature is different. (Currently I have Newtonsoft.Json 18.104.22.168 and 22.214.171.124 loaded in my Revit 2018). The responsibility is on the calling app to make the binding specific to that version. Dynamo, as a professionally distributed application, should be specific in its bindings and reference the exact DLL version that it needs to work. Otherwise it will default on the currently loaded (in case of Newtonsoft.Json, pyRevit loads that on startup - although pyRevit loads later than Dynamo it loads all its DLLs on startup.) which could be the incorrect version.
Let me know if there is anything I need to fix or improve on my side please to make this work: https://github.com/eirannejad/pyRevit/issues