all: Use Stream interface for controller client StreamJobEvents

This also fixes some cases that did not properly handle the channel being closed, which resulted in panics in some error paths.
Oops, meant to get rid of that.