Is there a solution where a transactional query, run as a cron, can be forced to find all related events?
As I see it, if the matching events fall outside of the scheduled time period, those events won't be included in the transaction.
Indeed, if your search is timerange-restricted nothing outside that timerange will get through.
You could however do something like this:
some filters, wide timerange [some other filters, narrow timerange | return 99999 id] | transaction id
That way you would determine the relevant IDs based on some narrow timerange, but widen the search for those IDs only to "fill up" your transactions. I'm just not sure how well you can specify these two ranges in the saved search, might require some fiddling...