I've worked for many companies that said they hired the best. And to be honest when I hire I also try to hire good people. I think I could hire better if a) I had an open cheque, b) I was running coolest project in the universe. I did hire for some interesting projects but nothing close to an open cheque. Even under these conditions it's tough to find great people. You can go after people with a proven track record but even that doesn't always guarantee their next project will be as successful.
The reality though is that large companies with thousands of people generally end up having average people. Some company may hire more PhD's. But on average those aren't better software engineers than non-PhD's. Some might hire people who are strong competitive coders, but that also on average isn't really that strong of a signal for strong engineers.
Once you have a mix of average people, on a curve, which is the norm, the question becomes do you have an environment where the better people can be successful. In many corporate environments this doesn't happen. Better engineers may have obstacles put in front of them or they can forced out of the organization. This is natural because for most organizations can be more of a political question than a technical question.
Smaller organizations, that are very successful (so can meet my two criterias) and can be highly selective or are highly desirable, can have better teams. By their nature as smaller organizations those teams can also be effective. As organizations grow the talent will spread out towards average and the politics/processes/debt/legacy will make those teams less effective.