Your suggestion doesn't solve all the other state issues; WIMP messaging is just one. RISC OS is not designed to have more than one thing talking to the OS at once; too much of the API is implicitly stateful. If FileCore were adapted so it could yield rather than block, then when one process blocks on disc, others can use the CPU. This gives you a big performance increase over CMT, multi-processor or not.
The CSD is a global, shared among all processes. Much like environment variables, the sprite context, the VDU pipeline, and dozens of other things.