Is there anything like get_variable storage that doesn't get loaded every page? I have a custom module and I want to store a long bit of text (~20kB).

I was going to use variable_get but as I understand all vars accessed this way are loaded for every request, which is a memory waste as this will only be used for one block.

cache_get is not appropriate because I don't want the data getting cleared on cache clear. It's not really cache.

Is there anything else like that?
Variables are loaded on every page anyway, regardless of whether your custom code requests a specific variable be loaded or not.

So, the only extra memory overhead you will incur is whatever PHP packs your 20kB of data into.

If your app is sensitive enough for that to matter, then either create a custom table to store the data, or just write it to a static file and read it back from there. If not (more likely), then just use the standard variables method, it's easier.