My only gripe w/ GHE is the lack of branch-based ACLs. If we want to implement a Github Flow (https://guides.github.com/introduction/flow/index.html) methodology, but also have automatic branch detection and testing in our CI (Jenkins/Bamboo/whatever), we end up having to assign all users the ability to create branches in the given repository (which, in turn, gives them the perms to push to master). I'm actually quite surprised that this hasn't been implemented yet in GHE; I can understand why GH wouldn't have it, but GHE (because of the nature of its user base) really should.
That issue aside, the UI in GHE is simply superior to GL and Stash.
So while everyone would have the ability to push to other branches, they wouldn't be able to touch master outside of pull requests, which I think is what you want anyways.
The issue I have ALWAYS had with GHE isn't with GHE itself but with how organisations use it, there are usually dozens of organisations that make little sense and 1000's of repos that are often empty or abandoned. It becomes a black box of repos that no one really knows the ends of.
The real improvements GitHub could make to GHE is improve the discoverability experience, it's UI/UX is inherited from public Github where people work in small(ish) groups on single projects within individual orgs. This, for me, is not the paradigm people employ in GHE.
My major gripe with GitLab is that it's really hard to navigate around. There are lots of links that take you somewhere other than what you'd expect. The landing page for projects is the log, you have to click a tab to see README and file structure, which I've always found clunky.
EDIT: also, GitLab's syntax highlighter gets really confused if a search result snippet starts in the middle of a string. Never seen that problem on GitHub, but it could be there, too.
Just my 2c.
I've never encountered the search issue you describe. We're using the latest GL, perhaps it was a problem with an older version?
25k sure is a lot of money. Then again, can you put a price on the frustration of developers used to working with something better? Maybe.
Currently, my startup is using GitLab. It does the job for the 16 or so developers we have. It has issue tracking, wiki, web hooks, merge requests. Pretty much all the same features as GitHub, but not as clean or pretty.
GHE is very social, GitLab never had that feel for me. Same feature set, really.
Can't say much about an enterprise environment. The UI is superior IMO.