What do you think about multiple backends? It seems to be working well for me to have a single root module but with a separate backend configuration per environment.
Multiple backends are unwieldy if you're using terraform at the command line, but they beat workspaces handily for discoverability.
They're a fine option if you're applying through CI though, as the drudgery of utilizing them is handled effortlessly by the robots.
That does work well for environments because typically you’d run exactly the same code, maybe with different cluster sizes or instance types, in each environment. But it doesn’t work well for isolating two services where the code is significantly or even entirely different.