go race is pretty much a port of Thread Sanitizer, which was a C tool. Before that, there was Helgrind, also a C tool. All of these tools have a long list of forerunners in academia, largely for Java (Eraser, FastTrack, etc.)
Eraser and FastTrack are un-googleable, if you have any links they would be appreciated.
Vendoring makes life hard for people who have to package software. Traditionally, you have build dependencies which are the libraries your software uses. In Go (because nobody follows semantic versioning when changing the API of their libraries, and the Go tooling doesn't allow you to specify versions of a package -- WHICH IS ACTUALLY CRITICAL) you just have to dump all of your dependencies into the same place as your source and be done with it. I don't see why people see vendoring as the solution. Defining version dependencies in your source is the solution if you want to go with "our source code defines what we need to pull in". Don't get me started on the static linking issue. Oh, and build dependencies have to be packaged as source code (packaging them in their compiled form is quite hard to do).
There are plenty of good third-party options available for dependency management (nice double standard btw since you apparently have no problem with third-party stuff for fmt/vet/lint concerns) and there is also this https://golang.org/cmd/go/#hdr-Vendor_Directories so a better world is coming don't you fret.