This was so much easier than I expected. Hibernate rocks (once you figure out how to use it)!
In case anyone else has the same question, I ended up using the component tag. I didn't have to write a UserType or even map the collection class. It makes sense (now) because it finally became clear that it wasn't an entity object.
Anyway, I added this to the hbm file of the class that uses my TemporalCollection class:
Code:
<!-- delivery addresses: -->
<component name="deliveryAddresses" class="eg.libraries.collections.TemporalCollection">
<map name="contents" table="delivery_addresses">
<key column="account_id"/>
<index column="position" type="calendar"/>
<many-to-many column="address_id" class="eg.contactable.ContactPoint"/>
</map>
</component>