Having these requirements I would just implement all the processing in an activity. This activity would:
- Paginate through results
- Heartbeat the progress (page token) back to Temporal
- In case of failure restart execution from the last heartbeated page token
- Process results locally, possibly using parallel threads
- In case of failure keep retrying locally
The workflow would invoke this activity with an appropriate retry policy to ensure that it is retried if its worker dies.