Fix dispatcher crash on gevent LoopExit exceptions
Handle gevent LoopExit exceptions gracefully to prevent dispatcher
crashes. Add exception handling in main loop and lock_machines() call,
with loop exit counter (max 10) to prevent infinite restarts. Isolate
child processes using start_new_session=True so job supervisors
continue running independently if dispatcher encounters exceptions.