Do I need to keep a 64-bit version number secret? Assume the following structure:

version | iv | ciphertext | HMAC(version | iv | ciphertext | ..., key)


The version starts out to be a "random" 64-bit number. It identifies the key used to encrypt the ciphertext for the purpose of key rotation (version is not, nor does it contain any part of the key). For every message encrypted by the same key, version is the same. The rest of the text, starting with a random iv, is always different.

Is there any reason I need to protect version? If an attacker knows the version the most they can do is identify a group of ciphertext that was encrypted with the same key.

The ciphertext itself has validity period of it's own. The data should be updated around the same time as the key is rotated. The rational behind version is to allow the ciphertext to be updated gradually as-needed.

Would obscuring the version in some way add any benefit, even small? Something like this:

$Version_n \oplus Hash(iv)_n$

I know this adds no real security benefit. If version doesn't need to be protected, the most I'm going for is to make it appear random.
For most purposes, you probably don't need to provide confidentiality protection for the version field.

There may be some settings where the version field allow traffic analysis, and to analyze that, we'd need to know so much detailed information about your particular protocol that the question would probably become too localized to be a good fit for this site -- but for most circumstances, you don't need to worry about confidentiality protection.

I do recommend you do apply integrity protection (e.g., the MAC, as shown in your question).  The word "protect", in cryptography, is ambiguous, and it's important to understand that confidentiality protection is not the same as integrity protection.