Increasing the packet rate to one every 0.1ms or decreasing it to one every 10ms doesn't seem to prevent the error.
I wondered whether there was a speed overrun problem or something - so I tried registering an espconn_regist_sentcb and only sending a packet after the previous one's callback had returned. Didn't make a difference.
So what's the deal? What the heck does ESPCONN_IF mean? The documents say "USB send error" - which is stunningly un-useful when returned from the USB Send function!