how to run multiple versions of one shell on a single machine

If you're happy to build from source, you can install each version into a separate prefix, then adjust the path in your scripts accordingly.

bash, fish, ksh, tcsh, zsh, and dash all support the --prefix argument to configure, so you can download each version, run ./configure --prefix=/opt/SHELL-VERSION; make; make install. Then to use each version, set PATH to have /opt/SHELL-VERSION/bin at the front.

csh is a bit different and will require more manual work; if you're sure you want it, you can extract the sources from the FreeBSD source tree and edit the Makefile, but most people actually use tcsh anyway.

I don't think there's a canonical source for ash but it will probably have a similar way of going about things.