Instead of tracking a Product, we could track all of the StoreProducts contained within a Product at the time, and if StoreProducts are reditsributed onto new Products some later time, it'll introduce a new price when any cluster changes – this would be one obvious way to implement features such as price update tracking w/ registered users.
A more advanced option would be to, in addition, link old Products to new Products by the amount of StoreProducts linked to it, but this doesn't solve (hopefully rare) 50/50 situations.