Just to be safe, won't allow concurrent goroutines to modify the map.
The exponential cooldown prevents newer torrents with no seeds
blocking older ones with seeds, when there are enough failures that a
cooldown event would fill the queue with only failed torrents.
The normal GetTorrents version always called COUNT(*) on the query,
which consistently took around 300 ms. With the NoCount, the SELECT
queries take 5-50 ms.
The FileList that is read with GetTorrents is empty, as it's only loaded with
GetTorrentById. So, always insert the new FileList on the database, and rely on
the unique_index to avoid duplications.
It used to update only torrents with NULL or 0 filesizes, setting
both their filesizes and the file lists. Now, it looks for both
NULL or 0 filesizes and empty file lists.