I am basically looking for input on what is a good ACK/NACK:ing strategy, what you guys have used in the past, what you know works, etc.
Last time I wrote a reliability layer, it was essentially your option C - but without an explicit missing-nack notification.
Let's say a packet gets lost on the way from Alice to Bob. If Bob ever receives another packet, he'll send around 16 nacks for the missing packet before it's ready to fall off his ack/nack mask.
That means at least sixteen consecutive packets would have to be dropped/delayed on the way back from Bob to Alice in order for Alice to then get a packet with an ack/nack history that didn't cover the packets waiting for acks in her sent-cache.
In the context of high performance, quick response networking, it seems reasonable to consider that a broken connection.