The library is not optimized for just getting the cover art count. When TagsLibrary_Load() is called all tags are parsed, if you use ttAutomatic then file's tags are loaded in the particular tag class, for example in ID3v2 tag class, then all tags are parsed into the global tag class.
What can be done to speed things up:
If you need a particular tag use that option for example for ID3v2, always use 'ttID3v2'.
Disable all audio attributes parsing before creating a tags instance:
TagsLibrary_SetConfig(nil, 0, TAGSLIBRARY_PARSE_OGG_PLAYTIME, ttAutomatic);
TagsLibrary_SetConfig(nil, 0, TAGSLIBRARY_PARSE_ID3v2_AUDIO_ATTRIBUTES, ttAutomatic);
TagsLibrary_SetConfig(nil, 0, TAGSLIBRARY_PARSE_WAVPACK_AUDIO_ATTRIBUTES, ttAutomatic);
TagsLibrary_SetConfig(nil, 0, TAGSLIBRARY_PARSE_MUSEPACK_AUDIO_ATTRIBUTES, ttAutomatic);
TagsLibrary_SetConfig(nil, 0, TAGSLIBRARY_DEEP_OPUS_BITRATE_SCAN, ttAutomatic);
Use multi-threading, in case of a 4 core CPU this might give 2x 3x speed-up.
BTW 30 files per second, that's not that bad.