Currently the goroutine that calls initializeRound() exits if the transaction fails. The idea was to protect the transcoder's ETH so that it doesn't continuously retry and waste ETH indefinitely.
However this seems to be resulting in a scenario where all the transcoders get inactivated because no one is calling initializeRound(). We don't know why all of these goroutines have exited, but there's a chance it is just due to someone else manually invoking initalizeRound() since anyone can call it.
One suggestion is that rather than exiting, the goroutine should just wait roundLength() # of blocks until it next considers calling initializeRound(). This way the protocol will move on indefinitely.