Just to follow up, for Lotusphere I tried using xsp.properties in the nsf. That didn't work. I also extending djConfig by using the 8.5.2 xp:head tag, again it didn't work.
I noticed xspClientDojo always gets loaded, regardless of dojoParseOnLoad settings. So effectively the Xsp Command Manager needs to load xspClientDojo in order to handle partial refreshes, typeahead etc. So it looks like there's something in there to load the relevant server version. That happens before the code in your nsf or XPage runs, so overrides any dojo version settings.
I spoke to Paul Hannan at the time, but in the lead-up to Lotusphere everything was manic. I'll see if there's an update, but I wouldn't expect it to be feasible in 8.5.2, I can imagine it being a big job to expose the functionality, though I appreciate the requirement.
If it's individual dojo modules you MAY be able to reproduce the functionality in a previous version of Dojo by extending relevant modules, but that may or may not be possible, depending on the functionality.