dir: Do not flag non-running failing HSDir

When a directory request fails, we flag the relay as non Running so we
don't use it anymore.

This can be problematic with onion services because there are cases
where a tor instance could have a lot of services, ephemeral ones, and
keeps failing to upload descriptors, let say due to a bad network, and
thus flag a lot of nodes as non Running which then in turn can not be
used for circuit building.

This commit makes it that we never flag nodes as non Running on a onion
service directory request (upload or fetch) failure as to keep the
hashring intact and not affect other parts of tor.

Fortunately, the onion service hashring is _not_ selected by looking at
the Running flag but since we do a 3-hop circuit to the HSDir, other
services on the same instance can influence each other by removing nodes
from the consensus for path selection.

This was made apparent with a small network that ran out of nodes to
used due to rapid succession of onion services uploading and failing.
See #40434 for details.

Fixes #40434

Signed-off-by: David Goulet <dgoulet@torproject.org>
9 jobs for ticket40434_045_01 in 18 minutes and 2 seconds (queued for 6 seconds)
latest
Status Name Job ID Coverage
  Test
passed debian-disable-dirauth #32883

00:11:13

passed debian-disable-relay #32884

00:11:56

passed debian-distcheck #32879

00:13:19

passed debian-docs #32880

00:04:42

passed debian-hardened #32878

00:13:40

passed debian-integration #32881

00:18:00

passed debian-minimal #32877

00:11:17

passed debian-nss #32885

00:08:08

passed debian-tracing #32882

00:13:26