Various changes again.

Changed design a bit. It didn't make sense for me to schedule some packets
and not others, regardless of how big they were.

We also no longer destroy the entire urb, we only free and
reallocate the buffer associated with the urb.

I see that there's some overlapping in the use of variables,
specificially whenever we're inside of the scheduled work.

Both are actually just as viable so I may remove some
cruft after we become a bit more stable.

I did see a problem today concerning the DMA buffer.
Unfortunately, I'm an idiot and didn't log it for future
reference. These changes may fix it but I don't know what the
problem was. I'll be mostly testing again today.