Is there a way to enfource a new route towards my hidden services so I
can circumvent the peers that are failing?
From the Tor Project website, we see:
An onion service needs to advertise its existence in the Tor network
before clients will be able to contact it. Therefore, the service
randomly picks some relays, builds circuits to them, and asks them to
act as introduction points by telling them its public key.
Theoretically you could have just have the Tor service on your machine restart every 15+ minutes to choose new random nodes to connect to, but I'm not sure that would help.
If you are running your onion service at home, what kind of upload speeds do you have through your provider? Most ISPs only provide a fraction of the upload speed compared to download speed so you could be using up all of your available upload bandwidth.
My suggestion:
Set up a simple web server as an onion service and make a simple script to check it once every 15 minutes. Are there certain times of the day that it is more unstable than others? Is it random? If you let it run for 24 hours, out of the 96 times that it should theoretically connect, how many times did it time out or not connect at all?
These are some simple things that you can do to test your connection and help pinpoint the issue.
If you are using Linux/Mac/BSD, you can use this bash command script to check your connection every 15 minutes for 1 day. Review oniontest.log to see the results.
for time in {1..96};
do
echo $time >> oniontest.log; \
torsocks curl -I expyuzz4wqqyqhjn.onion >> oniontest.log; \
sleep 900; \
done
Replace expyuzz4wqqyqhjn.onion with your onion service or use it as a control example.