Luca,
While I've not tried this I can make a suggestion. If you load the whole result set in OnManualLoadData as you're doing now but instead of sending it straight to the Client you save it in a Server Web property, possibly even paginated, then you can read data from this property and send it to the list a page at a time. Of course, if the data is changing rapidly the stored data could become stale. In this case you might want to reload the property every call which would slow things down a bit.
Ian