Fix an issue where Network RX rate limiting was misbehaving
Fix an issue where Network RX rate limiting was misbehaving

For certain configurations and scenario timings, the Network RX
rate was considerably lower than the configured rate limit.

This was happening because rate budget tokens were being consumed
even for packets which failed delivery to the guest and were retried,
thus leading to budget double spending for some packets.

This commit fixes that issue by refactoring a small piece of the code
that now undoes the token budget spending for packets which fail the
initial transfer to the guest and are subsequently retried.

Signed-off-by: Adrian Catangiu <43487eb7d05f4ed2cf28dd3e748821285e5f7796@amazon.com>

firecracker-microvm/firecracker,firecracker-microvm/firecracker,firecracker-microvm/firecracker,firecracker-microvm/firecracker,firecracker-microvm/firecracker