Thanks @Ambert
I have updated it since so to clarify, the SVGs aren't being read from disk per request; they're cached in memory once (Lazy<> on a dictionary keyed by block grid alias), then referenced by that same field the backoffice uses for the thumbnail. So editor and frontend are already pulling from one source.
However, they do end up inlined in the HTML rather than referenced from a sprite, which is a valid point for sites with lots of icons per page but for our volume it's fine.
Appreciate the IconPicker link though and I am sure it will be useful.
I have noticed a few icon packages lately.