Just want to add that I did found this is not RPi specific at all. Today I decided to try booting a x86 PC with libreelec 7.0.2 and test it, started with a fully clean config, installed TVH PVR Client plugin, setup it to connect to TVH on my RPi and could reproduce the problem. Then I decided to install TVH also on that new x86 libreelec (thus not depending on RPi or anything else), configured it with my channels and picons... changed TVH PVR Client plugin to connect to local TVH (127.0.0.1)... reboot... tried to browse the channels list on kodi and... I can reproduce the problem!!! I'm attaching the log.
Btw, I did found one thing that may be related to all this: TVH is replying whole file contents to HEAD requests to imagecache urls (like if it was a GET request), and I notice on logs that kodi does a few HEAD requests... and curl is trying to reuse connections... maybe that puzzles curl (as no contents should be expected) and causes curl to "stall" connections?
Anyway on kodi for windows curl handles this non-standard thing, and alerts it on log like this "Excess found in a non pipelined read: excess = 4540 url = /imagecache/1115 (zero-length body)", on libreelec version I see no such lines... different curl version doing difference?
CvH: Sorry to persist, but if you try to clean image cache on tvh, then reboot libreelec (or stop/start tv service on kodi...), then when you browse channels list for 1st time on kodi in libreelec don't you see icons fetching slowly? (just scroll down the list as they apparently fetch as you scroll it) and check if you have lines like these showing on kodi log:
00:59:51 T:140085617993472 ERROR: CCurlFile::Stat - Failed: Timeout was reached(28) for http://127.0.0.1:9981/imagecache/703
00:59:55 T:140085626386176 ERROR: CCurlFile::Stat - Failed: Timeout was reached(28) for http://127.0.0.1:9981/imagecache/799
00:59:56 T:140085374736128 ERROR: CCurlFile::Stat - Failed: Timeout was reached(28) for http://127.0.0.1:9981/imagecache/702
01:00:34 T:140085626386176 ERROR: CCurlFile::Stat - Failed: Timeout was reached(28) for http://127.0.0.1:9981/imagecache/732
01:00:34 T:140085366343424 ERROR: CCurlFile::Stat - Failed: Timeout was reached(28) for http://127.0.0.1:9981/imagecache/791
(no need to enable debug to see just these)
Note that it only happens for 1st time kodi is fetching them (and cleaning tvh image cache should force that, as it assignes them different numbers for their imagecache/nnn urls, and the kodi restart I mention is needed after that to get new urls from tvh). After icons fetched then kodi caches them and it will be always fast, until icons change again...
(there is another way to force kodi re-fetching icons without cleaning image cache on tvh, by just cleaning kodi cache itself, just deleting .kodi/userdata/Thumbnails/ dir and .kodi/userdata/Database/Textures13.db file, restart kodi, then browse channels list and it will fetch icons while scroll)
If you can't reproduce this... then I guess maybe I should search for paranormal help as I can always reproduce it... on two RPi's, now on x86, multiple clean configs... only on kodi on Windows as TVH client I can't see the problem (but from curl debug log I think there may exist differences on the way curl does requests) or using apache to serve icons then also no problem at all on any kodi client as I said before.