There need to be two cases. First, if a thing goes off the queue because the tailexit is a long way out, then we need to handle that. This is currently broken - hop_progress and hop_cost interact badly.
If the packet is just huge, then that's different. This might work properly now.
The easiest solution is probably to add a new flag to the system that flags differently for "waiting for tailexit" and "waiting for big packet"