The key defining factor of a replay attack is that the replay'd message is treated as legitimate traffic and has some effect. Simply being able to replay a transaction isn't enough - it has to also look like regular traffic.
For example, say you have a programmable wireless car-key. You have to type your password into both the key and at some point the car, lets say.
If the password is sent to the car in plaintext, it is both vulnerable to confidentiality AND integrity attacks (your third criteria, availability, would be if you could jam/block the car-key or not).
So say you encrypt the password with SHA9000, and send that to the car. Eavedroppers can no longer see/decrypt your password and it's no longer vulnerable to confidentiality attacks, but since your password hashes the same way every time it can simply be replayed.
Now imagine that you don't encrypt the password, but you do send the password plus the current time of day. Now communications are no longer confidential, but they are protected from 'dumb' replay attacks. I say dumb, because the attacker knowing the protocol could easily replicate it knowing the password, so we haven't got true integrity protection yet, but its a step in the right direction.
Unlike confidentiality attacks, integrity attacks have a much broader spectrum of vulnerability. It's often not all or nothing, but somewhere in between. Certain kinds of packets maybe, or perhaps "60% of the time it's vulnerable every time" if it's PRNG related... it used to be a bit of a cat-and-mouse game with protocols having all sorts of weird checksums, etc, to ensure it was a legitimate device sending them, but attackers would eventually learn and dupe the protocol... early security jobs mainly focused on communication integrity.
Then the wide-spread adoption of encryption changed all that, because everything wrapped in a layer of encryption carries the authenticity of the encryption too.
For example, in our car-key example, if you concatenate the password and the time of day together into a single string, and encrypt that, you can get integrity and confidentiality in one.