Is the issue that there is no transaction for this product in the entitlements, or is the issue that the originalPurchaseDate is not what you expect?
To understand this, you need to get telemetry from your app (by either writing to a log and asking the user to export and send bit to you or by sending events to a server)
I would recommend sending the current date, originalPurchaseDate and just in case also the purchaseDate (to see if there is any difference).
However, my first suspect would be the time difference calculation. Maybe you took into account timezone differences where it is not required? The user who had an issue might be on a different time zone. Ask someone to review the code.
Regarding your overall strategy, you should consider two things (which might not be real issues, depending on the popularity of your app and the motivation to "hack" it):
Using the system time (eg Date.now) allows users to change the devices clock to a previous date. If they do it each time before launching your app they could get a "free trial" indefinitely.
I believe originalPurchaseDate and purchaseDate do not take refunds into account. So a user might request a refund and re-purchase the IAP. This new transaction will have a later originalPurchaseDate and the old one will not appear in currentEntitlements anymore.