providers: run datastore GC concurrently
providers: run datastore GC concurrently

Motivation: Walking the datastore can take time and currently blocks
adding/removing providers.

We need to do this in the same goroutine to avoid some logical races.

libp2p/go-libp2p-kad-dht