Almost all of these are quarrels with Git's UI/UX, not with its model of representing data. Tools like https://rowanj.github.io/gitx/ combined with a git-flow workflow (or anything similar) solve practically all of the mentioned shortcomings.
GitX is one of those great, simple tools that I have used for years. I do actually love the Xcode treatment of a git UI as well, but it's overkill in most cases.