Move more of retry logic away from BaseConsumer/Event classes