@WhatisPowerApps
Is SharePoint your only option? Perhaps SQL?
Anyway, if SharePoint...
Consider that you will be dealing not only with delegation but also with record limit (two different things).
I would first ditch the running of flow daily to change a column. I would still consider doing your expiration calculation on creation. What value does an Expired column have? If the expiration date (calculated when entered, or changed when edited) is Feb 1 2020 and today is Mar 6 2020, then we know it is expired.
So with the above in mind - if when know that the maximum expirations in a given period (let's say a month) will not exceed 2000, then we can use that.
Use flow, during item creation or edit, to create an Expiration Period value and place it in a numeric column. The calculation will be a granular as the period you need. So (again, using a month as our period), we would have Flow put the number 202002 in the ExpirationPeriod column and then 01 in an ExpirationDay column.
Now, we can do a delegable filter against the two numeric columns. One for ExpirationPeriod>CurrentPeriod AND ExpirationDay>CurrentDay
This will give you the flexibility of avoiding delegation and also reducing record limit issues.
I would lean toward something more like this because even given your thought of having flow update a yes/no column, you are still going to be dealing with record limits.
SharePoint gives us very little options for Server-Side processing of data (i.e. delegation) (unlike SQL, where we can employ a View to preprocess), so you have to get creative while knowing the boundaries that you will encounter (record limit and delegation).
I hope that is somewhat clear.