No, the RTL writes these messages to stderr,. not any particular unit. There is a lot to go through to "unwind" a current operation, and typically with errors that may not be possible or might lead to other errors. Writing to unit 0 or a different unit is quite simple.
Would it be out of the question for your application to start an additional process (either before or in your error handler) and send the message to the additional process. Due to the nature of your error handler itself, causing an error, I'd suggest that after a few recursive errors that you hang the error process. Or....
On the first occurrence of the recursive error either hang or launch the debugger as the additional process and then attach back to your app with the error. You can then force a break into the failing app and then use the debugger to explore what happened.
>>so if we sent the error text to unit 0, it would become disjoint with the main program output.
Timestamp your outputs, then merge. You would still have the issue of what was not flushed to the main output unit.