At least on my machine, it's indeed a race condition.
Before moving the dbus service file:
$ pgrep -la ksecretd
12886 /usr/bin/ksecretd
After moving the dbus service file:
$ pgrep -la ksecretd
8441 /usr/bin/ksecretd --pam-login 13 14
With a tool that logs what processes spawn what, I found that in the first case ksecretd is spawned by D-Bus, while in the second it's by sddm-helper (which seems to what SDDM uses as a vessel for PAM modules)
I hacked the dbus service files for Turnstile in order to enable logging and found a likely culprit:
dbus-daemon[5289]: [session uid=1000 pid=5289 pidfd=5] Activating service name='org.freedesktop.portal.Desktop' requested by ':1.11' (uid=1000 pid=5345 comm="/usr/bin/kcminit_startup")
[...]
dbus-daemon[5289]: [session uid=1000 pid=5289 pidfd=5] Activating service name='org.freedesktop.impl.portal.desktop.kwallet' requested by ':1.12' (uid=1000 pid=5348 comm="/usr/lib/xdg-desktop-portal")
It seems xdg-desktop-portal (which is started by KDE's login procedure) starts kwallet before the PAM module does.