@DG: Yes, for the beta where things change constantly that would be the best. As a quick fix when there is no autodownload a simple field in the savefile with a string of the modul/engine version would be sufficient. If the savefile has a different version than the engine that attempts to load it, output an error like "This is a $TEngine_Version, $Module_Version savefile. Please load it with the corresponding version. Loading may cause severe compatibilitly issues! <Load anyway> <Exit>".
Of course for convenience, it would be nice if the version is displayed directly in the short char description in the load menu.
Apart from that:
I'm not sure what data is stored in the Profile, but given different version of the *TEngine*, directly loading the correct engine might cause some problems in terms of engine/module path etc. since the folder can be moved whereever you want it (it's not really "installed" anyway and should stay like this IMHO).
Loading different module versions within the same engine (in future, when the engine isn't bound to be changed that often anymore) should be simple, by just treating the version as different modules or create a possibility to define "submodules".
The latter would mean a minor chance in the module path structure. something like:
$TOME_PATH/Modules/$ModuleName/media/music/...
$TOME_PATH/Modules/$ModuleName/media/tiles/...
$TOME_PATH/Modules/$ModuleName/gamedata_v1b8/...
$TOME_PATH/Modules/$ModuleName/gamedata_v1b9/..
with the lua-scripts in the version dependent subfolders. That way even tiles and music are automatically integrated into older versions as a sideeffect and don't have to be stored multiple times.
In theory a simiplar approach should work with the Engine too, if you make the "t-engine4" executable engine independent. A simple "load lists of savefiles and load beta" loadtool.