Acquire semaphore outside of goroutine for resyncs (#668)
Currently we end up with millions of goroutines waiting on semaphores
during a full PDS resync if we run against all production PDSs, this fix
waits for the semaphore _before_ spawning the goroutine reducing allocs
and the size of the stack significantly.