The easy way to enforce this would be to leave it individuals. Applied to a job and heard nothing back? Sue. You'd have to pretty tightly define the law, such that it could be simply applied, but I could imagine all sorts of concrete rules which would significantly improve the status quo. Something like "Public job postings may be up for no more than 60 days for a given position, interview process must last no more than 30 days beyond that. By the end of the subsequent 90 day window, the company must either hire at least one applicant and let the others know they didn't make the cut, or demonstrate that they received zero acceptable applicants by providing concrete reasons for rejection to all applicants.
It's a "shit or get off the pot" type deal: the easiest solution to the problem is to just find an acceptable applicant and hire them.