LPS-40581 Initial refactor - no logic changes
LPS-40581 Cache failed logons per-thread to avoid undesired lockouts