That might work if I re-bound the split-window
function to launch a new Emacs client, because this is the function that most other Emacs functions use to split the frame into windows.
But I think a better approach would be to just add a single rule function into the display-buffer-alist
that always asks for a new frame no matter what the input is.
Mickey Peterson wrote an article on how Emacs manages its own windows, and the Elisp Manual on Windows is pretty good too.