This is really cool, thanks.
I tend to have one space per task and have at least a Firefox and an iTerm on every one.
Just running a single monitor is the way to go for me. The benefits of multiple monitors just doesn't make up for all the fiddling.
I finally got sick of this and wrote a Hammerspoon script to deal with this. The config looks like this:
Now when I connect my two external monitors, a quick Ctrl-Alt-Cmd-R lays everything out. It's crap that I have to, but it saved my sanity.