So when you're sending, can you send frames of any length? For example, can you send a 2-byte packet, and receive exactly these 2 bytes on the other computer / ESP?
I did some tests with Wireshark, and when I send frames of 18 bytes and less with ppTxPkt, Wireshark sniffs a 19-byte packet where the additional bytes are junk. Also, the Duration ID field always gets set to 0. Otherwise, all other values can be as arbitrary as you wish.
As for the receiving, I think what I have should work in your case, then. I haven't tested this a lot, but it should be possible to receive data asynchronously in the wifi_raw_recv_cb and do your own filtering in there.