My initial reaction is that the application/interview process took a long time, but looking back, three months seems like a reasonable amount of time to hire for a role. The initial outreach by the recruiter took about a month from application, the interviews were speedy and then it took another month to receive the generic decline email.
I believe most applicants realize when they have not heard back from the company (after numerous follow up emails) that their candidacy is in question for the role. In return, it would be beneficial to candidates to at least understand where they are lacking in their background, rather than just the generic decline email. Obviously, there is feedback given to the recruiter from the hiring manager on whether to move a candidate forward or not. Still unclear why that information cannot be shared with the candidates.