Refactor and simplify guard code of circuit_send_next_onion_skin()
As part of prop271 (legacy/trac#19877 (moved)), we added about 70 fresh lines of code to circuit_send_next_onion_skin() which is an already convoluted function.
Ideally we should abstract this new circuit-related guard code and put it in its own functions, to reduce complexity of circuit_send_next_onion_skin() and maybe even make it unittestable.