Herbstluftwm. It's one of the main reasons I use it.
You can run commands on the command line to create your layouts for one or more desktop (tagged spaces), assign programs to appear on tagged spaces, and then run the programs. Put it all in a shell script and hlwm runs it when it starts.
I use xtoolwait for programs I want multiple windows on different desktops for, like terminals.
I have three monitors; one is a status window, and the other two are grouped together in 8 different tags. Mod4+9 focuses the status screen, Mod4+[1-8] switch the other two monitors in sync to the other workspaces. It's all set up when I log in, including the creation of several terminals each running tmux from sessions restored by trum-session. The only thing I have to do is enter a password to unlock my secrets so background processes can start doing their thing.