Better fix for lost channels.

This is a better fix for the lost channels.  It checks when a qh is
removed from the schedule whether it still has a channel assigned.

It is does then it releases it and puts it back onto the free_hc_list

Not 100% definite that this is the only place where this can occur, but
it seems fairly stable with the usual dequeuing tests.