I want a "Mainnet" and "Testnet" for my network. It's forked off https://github.com/paritytech/substrate. Mainnet and Testnet will have some parameters set differently, many of which need to be set in Runtime and not in GenesisConfig - things like LaunchPeriod for democracy. Looking at different projects, the accepted solution to this seems to be multiple runtimes with different parameters.
My question is: is there a recommended best-practice way or some template of supporting many runtimes in a single node codebase? https://github.com/substrate-developer-hub/substrate-node-template and https://github.com/paritytech/substrate doesn't seem to have any infrastructure in place to do that. Structure of https://github.com/paritytech/polkadot is very different from the substrate-node-template, so doing it their way requires lots of effort.
I've tried abstracting runtimes away in each place as I go and it's definitely doable, but it feels like reinventing the wheel, so I want to make sure I'm not missing something obvious here.