In the BACnet protocol, the messages are not sent directly, but pushed into an internal state machine that remembers (some) of the previously messages sent (i.e.
memorize(_msg); send(_msg); ).
The state machine also peeks incoming messages and can trigger a message re-send in case of a missed ACK.
the difference with MySensors is that all the messages are numbered, otherwise you would not know which message of the last N sent previously was ACKed,
but well.. ACKing the last similar message might be good enough.
Anyway @SiLeX : if you want to try, this is not that complicated, (if you don't take into account the STREAMs) it will just costs about (1 status byte + 1 timestamp + 1 frame size) x N ; for N frames memorized.