I think you should tune the rules for calculating version numbers a bit.
When a commit is a tip of branch and contains a tag, the tag should only have precedence if it equals the version number of the branch and contains som extra metadata (eg. 1.0.0-rc.3), or if the branch doesn't contain any version number.
Eg. develop branch is just updated and tagged with an alpha/beta number, then there is forked a release branch with a given version number. An initial build from the release branch will create a version number from the tag, since the commit are the same.
I can't se any use case where current functionality makes sense.