Using Channels and Goroutines in Go to create a highly performant worker pool