You probably need to set the nodelay option on pam_unix.
From man pam_unix:
nodelay
This argument can be used to discourage the authentication component from requesting a delay should the authentication as a whole fail. The
default action is for the module to request a delay-on-failure of the order of two seconds.
Setting both delay=100000 on pam_faildelay.so and nodelay on pam_unix.so in /etc/pam.d/system-auth worked for me (you should use authselect as you mentioned in your original post).
Aha, so the problem is with autoselect or me using it. The way it works is that authselect apply changes somehow magically produces the appropriate files from my files living in /etc/authoselect/custom/lowdelay and puts them into /etc/authselect/ and links to them from /etc/pam.d. I am not able to reproduce my error but I must have been calling apply changes wrongly or possibly I misedited the files (I was not sure which pam_unix.so to add delay so I did to all, I havea suspicion it might have failed silently ignoring nonsense). Anyway, I was doing something wrong. Now I can confirm running (after removing /etc/authselect/custom):
sudo authselect create-profile nodelay --base-on=local
#this line does not do anything :-(
sudo sed -i -E 's/delay=.000000/delay=100000/g' /etc/authselect/custom/nodelay/system-auth /etc/authselect/custom/nodelay/password-auth
sudo sed -i -E 's/auth(.*)pam_unix\.so/auth\1pam_unix.so nodelay/g' /etc/authselect/custom/nodelay/system-auth
sudo authselect select custom/nodelay
sudo authselect apply-changes
Works as intended.
Still, I think that it sounds like a bug that nodelay is needed and lowering the delay does not work on its own. I guess I will report that to Fedora?
Is does seem like that configuration should be in one place or the other, not both. You could probably report that as a bug against the Authselect package and they should be able to address the problem in their default configurations.