Added a simplistic memory cache of reverse lookups for performance

Even with a local DNS server, lookups for every single request were
causing excessive CPU load and poor performance.
Reverse lookups of destination IP addresses are cached indefinitely
in a hashmap. Cache expiry is not yet implemented, but a simple
timeout would probably suffice - even if the entire cache was flushed
periodically.