Restrict portallocator to Docker allocated ports

Port allocation status is stored in a global map: a port detected in use will remain as such for the lifetime of the daemon. Change the behaviour to only mark as allocated ports which are claimed by Docker itself (which we can trust to properly remove from the allocation map once released). Ports allocated by other applications will always be retried to account for the eventuality of the port having been released.

Fixes #6476.
I agree it's not fully satisfactory, but as `Map` now holds the logic of actually electing the port, I find that always returning a valid `net.Addr` is helpful for the caller to know what it actually tried to bind (which is meaningful both in case of error and success).