I'm afraid there's no immediate solution for this. If we implement it in future, it would probably be done by allowing additional specifiers in liststreamqueryitems to indicate a start time and end time, since this is a general API for more complex queries.
For now I hope you can work with one of the two workarounds you suggested. If you want to make it more efficient, set a low value for maxshowndata, then the API output will be shorter, and you can go back and retrieve individual items using getstreamitem calls.