After much thought my conclusion is that there is no way to achieve this without bothering the user to log in in some sort of way.
The alternative I came up with is this:
I just create a regular non-consumable in app purchase, with the year embedded in its identifier. This way, in code I can check the identifier against the current year and determine if the user should buy the product with identifier "year + 1".
As non consumable purchases are linked to the user's iTunes account, they are automatically transferred to other devices like a new phone.
Only thing I must not forget is to create a new product for every year to come.