If you have the full count in advance, then you can pass in a content list with "invalid" entries (just set contentlist[maxcount] = invalid), then in the onListItemFocused event, check for an invalid entry X number of entries to the left or right of current, and use that to trigger the load of the next page of results.
My Instant Watch Browser has some grids with multiple thousands of entries, and I've never run into a crashing issue with it, so that shouldn't be an issue.
My Channels: http://roku.permanence.com - Twitter: @TheEndlessDev
Instant Watch Browser (NetflixIWB), Aquarium Screensaver (AQUARIUM), Clever Clocks Screensaver (CLEVERCLOCKS), iTunes Podcasts (ITPC), My Channels (MYCHANNELS)