Looking at the @RevisionEntity for versioned entity, does the id and timestamp need to be a property of the object being versioned ?
Can these be property of an object which itself is a property of the versioned entity.
Yes, it is like so.
The timestamp and other metadata are properites of the (default or not) revision entity. Each versioned entity has a relation - many-to-one - to the corresponding revision entity. You can retrieve it using the revisions-of-entity query.