This is now mostly fixed with "gopls". It's using go/packages under the hood which is both GOPATH and Go modules aware. gopls has also caching inbuilt, both code completion and jump to definition works very well.
If you're using vim-go, HEAD has now gopls support. I believe vscode also added recently support for gopls.
Other than, I agree that it broke all other tools, but most of them are migrated to use the go/packages package so it'll be better going forward.