If kernel code were executed in a separate process from user processes, another possiblity for system calls might be to pass a messages between the user process and the kernel.
In this case, the kernel process code would always execute in cpu kernel mode and user process code would always execute in cpu user mode.
But to make this work, you would need to have a mechanism for passing messages.