I think the short answer to your question is that the reason you’re not seeing much happening like what you describe is that HTML5 local storage is in no way up to the task, and we have until just the last two years or so lacked anything being specified that would provide a better solution.
About HTML5 local storage specifically: It has a race condition and some other problems that prevent it from being suitable for use in production for any application where you want to ensure there’s not data corruption and where you want to be able to store more than just strings.
Those problems in local storage could possibly be fixed but the reality is that none of the browser-engine vendors have any interest at this point in sinking further resources into their local storage implementations. They would all rather that Web developers use alternatives to local storage.
Anyway, for the use case you describe, thankfully there are actually more robust solutions in the works. The key piece going forward will be Service Worker—and, in the context of this question, the Service Worker Cache and CacheStorage interfaces specifically.
Also IndexedDB is the production-grade solution that the Web runtime now has for the general case of robust storage of data on the client, with efficient implementations, and with more feature-filled control over the type of data stored and how it’s stored.