I was able to implement SEH handling using __finally. It is very very ugly since I have to abuse your counting trampoline and fix ret address during the origcall processing both for 32b and 64b and call that trampoline manually in case of exception. But it works and SEH is propagated up the stack now.
This won't be crash free 100% since the __finally handler is in our DLL and it is not part of your hook trampoline, but I think we can live with 99% for now.
The best solution would be to support propagating SEH exceptions natively in all MCH hooks, but that is something you need to implement something like __try _finally in your trampoline and fix the stack accordingly. On 64b you said it is harder, but you could use this function RtlInstallFunctionTableCallbackmto register that callback.