Tags aren't objects in the sense above. They are not part of the object store and don't have a hash. They are references to objects. (Note: any object can be tagged, not just commits, although that is the normal use case.)
Notes allow you to associate an arbitrary blobcommit with an arbitrary Git object.
The storage of notes is a little more complicated. Actually, notes area note is just a commit (containing a tree containing blobs containing the contents of the note). Git creates a special branch for notes and the association between the note blobcommit and its "annotee object" happens there. I am not familiar with exactly how.
However, since a note is just a blobcommit, and the association happens externally, the hash of a note is just its contentthe same as any other commit.