SEH can't be ditched, technically, as it's a Windows x64 ABI requirement to have exception descriptor tables for functions so the OS can unwind through your code (when debugging or someone explicitly calls the backtrace API). Fortunately, LLVM already handled all that.
Again, in theory, what vcruntime is providing here is an exception personality. I have read this code, and I can quite certainly tell you that is never going to be clean room implemented. The question is if it needs to be, the so far as I know, that would be so you can catch a msvc++ exception by type: pretty sure that's completely out of scope. So it would be interesting to see how much you can dummy out the exception_personality lang item: I think at least some of it it determined by LLVM emitted code? I certainly never got anything useful working, but there's vanishingly little documentation.
I'm curious to know where all this "technically" becomes "practically" though, to my knowledge the only interaction from Windows APIs with SEH is that any exceptions thrown from a window message procedure are caught and ignored(!) - and you can't catch exceptions from a different language anyway.