The intention of keeping a cache of sockets like that is to reduce the load on infrastructure components (DNS lookups, stateful firewalls) and re-use the same forwarding socket for a while.

This way, we can do things like use hostnames in our configurations and not hit DNS for every request.
But this is also important for the intended usage of this feature. We have many state-inspecting devices between our environments, and creating a new ephemeral UDP socket for each message leads to tons of state tracking entries on these devices. By bundling our incoming statsd lines into one "flow", we can reduce what needs to get tracked.