You can already pass a since_id and max_id paramater in your API call; since_id will return tweets > than the ID you pass in (newer tweets), max_id will return tweets <= the ID you pass in (older tweets).
Say you have 50 tweets cached; when they load page 2, you can try and load 20 from your cache, and as you’ve got 50 cached you’ll be able to load 20 more, so you’re now showing 40. Then for page 3, you’ll try to load the next 20, but there’s only 10 cached tweets left, so then you would work out how many tweets short of 20 you are, in this case 10, then make an API request to load 10 tweets, and set max_id to be one less than the last tweet in your cache, and you’ll get the next 10 from the API to complete the 20 for page 3, which you can then cache.
Make sense? Hope that helps.