An interesting idea. We will have to look into how reasonable this is for us. Using CURLOPT_NOBODY php/curl should be able to do this very lightweight. Eg, not retrieving the data itself, but only the http headers.
My first idea of implementation would be to return something like the following. Geocaches without links wouldn't be listed. Archived geocaches would probably be ignored by default (or always).
GC123 - Awesome geocache
200 http://example.com/111
302 http://example.com/333
500 http://example.com/333
GC456 - Less awesome geocache
...
It would most likely be a background job where one has to return later to view the report. A working link most likely takes less than a second, links with timeouts could take 10-30 seconds depending on what we set the timeout at. It would also be reasonable to retry all timeouts an hour later for example.
The alternative to a background job would be a page that makes one ajax request per geocache or link and then adds to the page for every item received. It would look pretty much like the Bad logs page works today.