fetchSnapshot now caches based on transactionId

- serialization logic moved to dataStore to facilitate caching
- TODO: refactor fetchSnapshot
abstracts calls to db into methods

- removes unused status function
refactors fetchSnapshot

- moves functionality into private helpers
- renames fetchLatTransactionId since it does not query DB,
like other fetch functions