There are two issues here:
--- placing annotations precisely
and
--- differentiating between versions

Something like the following seems workable:

The document is fetched by the client, who checks whether the
document has annotations by asking the annotation server for
the headers of the annotations of this URL. The signatures
of the current document and the signatures kept in the headers
are compared, and the current annotations are added to the
document (as links or as marginal notes or ...). If there are
out-of-date annotations, they appear as a message saying
``this document had the following annotations on a previous
version'' and the titles/authors/whatever appear as a <MENU>
and are selectable.

The placement of annotations can be done on a byte-offset basis,
because the accuracy needs to be pin-point for the current document
and is ignored for previous versions.