I have a prototype in my workspace. This prototype works similarly as the compiler switching did before, with a couple of changes so that things seem smoother. Now, as before, we disable the undesired Groovy compiler version, and enable the desired version. However, now we do not try to stop the bundle before restarting. Disabling appears to be sufficient.
I tried this on windows and mac and this is working. However, we need to be careful since in the past it would work for some users, but inexplicably not work for others.
I will commit this change and try to get others to use it.