MAX_REND_FAILURES should not be 30
From src/or/rendservice.c:
/** How many times will a hidden service operator attempt to connect to
* a requested rendezvous point before giving up? */
#define MAX_REND_FAILURES 30
/** How many seconds should we spend trying to connect to a requested
* rendezvous point before giving up? */
#define MAX_REND_TIMEOUT 30
MAX_REND_FAILURES
is way too high. To find out how lower it should be, we will need to persuade the operators of popular hidden services to collect some statistics for us.