Re-implement hmr-refresh in terms of refresh (#87135)
Based on:
- #87134
---
hmr-refresh-reducer is identical to refresh-reducer except for the fact
that it doesn't evict the prefetch cache. So this refactors both
implementations to call the same shared function.