> keep interrupts disabled all the time except
It's not. So what?
> The defining characteristics of signals is that, like interrupts and multi-threaded execution
No, they can't. You control when they are masked and unmasked. Certain signals are delivered in response only to certain actions (e.g. floating point errors when enabled, or memory access failures). It's not the chaos you think.