simulator: stop using the database as a cache for origin data
This was a significant bottleneck of the simulator. To work around this,
we:
- Generate snapshot ids consistently in the OriginModel
- Cache the origin data locally in the simulator, to compute the eventfulness of visits
- Cache the last visit time for all origins to compute the estimated run time of visit tasks.