When a context is cancelled or times out, all child contexts (such as
those from `subCtx, _ := context.WithCancel(ctx)`) are also immediately
cancelled: they all become able to read from their `ctx.Done()` channel
simultaneously. This means that child goroutines can realize that they
have been cancelled and return *before* their parent goroutine has
realized that it has also been cancelled. This results in technically
correct but unhelpful error messages, such as the parent reporting that
it got too many errors from its children, rather than reporting that it
timed out.
In `getOperatorSCTs`, avoid this by always (in the error case) reading
results from all subroutines. When the parent context is cancelled, all
of the child goroutines will quickly exit, and `getOperatorSCTs` will
quickly collect their errors. Then, before blindly returning those errors,
it simply checks its own context and returns that error instead, if it
exists.