RX FIFO is now converted to APB, and I found and removed one of two unnecessary CDCs in the process (the other will be more work and I'll keep for a while).
Now chasing an apparently-harmless bug in which I get a zero-byte packet (start/commit pair with no data) before an actual frame. But I don't like it and want it fixed.