Thanks for your replies @Arwen @Davvo, in the end something changed and I solved my issue. I’ll post what happened to keep track of the issue for future users and to express some concerns with the web interface.
My setup is 4xVDEV with 10 22TB disk each, protected with RAIDZ2.
After the disk started showing errors, I immediately issued a replace using the web interface. That worked, but the system was still very unresponsive from time to time (I suppose when the kernel was trying to access the disk and failing).
One big concern is: the web interface, specifically the “Storage” tab, was completely unusable all the time, it just kept loading forever to the point that after 5 minutes I got disconnected from the session (and I did try this multiple times). I had to do all of that using the CLI.
After a while “zpool status” started working again and the system started behaving correctly (just a bit slower than usual). Both the replaced and the replacing disks showed ONLINE in the zpool status, the “scanned” speed was good enough but the “issued” speed was abysmal, like 100KB/s.
At some point everything became sluggish again, and I decided to “zpool offline” the failing disk. I waited more than 1 hour for the command to finish, then I tried to stop it using CTRL+C, didn’t work, so I waited more and at some point it actually exited. I confirmed that the status of the failing disk was actually OFFLINE.
The resilvering then started working as intended, it’s at 25% now after around 12 hours of work, expected to finish in around 2 days.
I usually work from the command line, so it wasn’t a big issue for me. However, the fact that the “Storage” section of the web interface was constantly stuck isn’t great.