I think NewsPublisher might work if you used the &classKey property in the tag, but I've never tested it.
SiteAtoZ would not work, but it's *very* slow to begin with. I wrote it a long, long time ago and it actually makes a separate call to getResources for every letter of the alphabet (shudder). I'm a little surprised that you're not getting PHP timeouts.
If you used ClassExtender to extend modResource, you could use getExtResources to get your display, but that wouldn't get you the A to Z display you have now (unless you called it 26 times
). You might be able to replace 'getResources' with 'getExtResources' in the SiteAtoZ snippet code. I think it would work. It would be faster, since you would no longer have any TVs, but I'm not sure by how much.
It's certainly preferable not to make 26 separate queries to the DB for a single page (or worse -- in your case it may be well over 100 with all the TVs).
It's a devilish (and interesting) problem. If you extend modResource and you have enough memory and server speed to get all the resources in one query (along with their extended fields), you could make it pretty fast with some custom code.
Something you could try right now, though, is to add some of the speed-related getResources properties to the AtoZ snippet tag, they will be passed through to getResources. If you can use the raw (rather than processed) values of the TVs (and you probably can), you can use &processTVs=`0`. You can also add &includeTVList=`3,9,22,45` with the IDs of all the TVs you need. That way any other TVs will be ignored.
It will also help if none of the TVs are set to the default value of the TV and none of them use @ bindings (e.g., @INHERIT). If you give all the TVs a default value of that will never be used (e.g., '---') and never use that value for a TV, they'll be found much faster.
Another option would be MIGX, but I don't really know how fast it is. It would almost certainly be faster that what you're doing now, because you'd only be getting one TV value per resource, but I don't think it would give you an A to Z listing. I could be wrong.
I hope this hasn't just made you more confused.