One step away from doing everything in global variables is loading the config schema, and thus default values, via SettingsBuilder rather than including DefaultSettings.php in global scope.
This should be done carefully in WMF production, to avoid breakage and performance degradation. The following steps are needed:
[x] Load the config schema via SettingsLoader if the MW_USE_CONFIG_SCHEMA environment variable is set. Otherwise, load DefaultSettings.php as before.
[] Collect timing information about loading deaults in Setup.php.
[] Make MWMultiVersion set MW_USE_CONFIG_SCHEMA if a specific file, such as cache/use-config-schema, exists on the current host.
[] create cache/use-config-schema in the container that runs the beta sites and watch for errors.
[] create cache/use-config-schema one a debug host and watch for errors.
[] create cache/use-config-schema one a single host serving web requests, watch for errors, and observe timing metrics.
[] create cache/use-config-schema hosts serving API requests and running jobs. Watch for errors, and observe timing metrics.
[] if all is good, set the variable unconditionally in MWMultiVersion. Watch for errors, and observe timing metrics.
[] if all is still good after a few days, remove the conditional from Setup.php and remove the relevant code from MWMultiVersion.