In Solaris 10 and above, if an account gets locked then the cronjobs no longer run. So Sun added a special kind of locking (passwd -N <account>) where the jobs still run but the account can't be logged into. This is all well and good, if not for the fact that if someone does actually try to log in 3 times and fails (because it is impossible to enter a password that encrypts to the NP string) then the password goes from being NP to *LK*NP - which then causes cron to treat the account as being properly locked and the jobs stop running (this behaviour varies with the Solaris 10 release, the early ones had NP accounts that locked, the later one I checked didn't. In Solaris 11 NP accounts will lock once again.)
Now there is a simple solution in that case (usermod -K lock_after_retries=no <account>) however that would only work for NP accounts, if the account is actually supposed to have a usable password that you want to lock on failure then you're shooting yourself in the foot by turning off locking just to run cron.
I worked out a better solution, modify /etc/pam.conf and for those accounts that are so important the jobs should continue to run even if the account is locked you just add them to a list and insert a line before the existing cron entry.
cron account sufficient pam_sample.so.1 allow=unixlad,root
cron account required pam_unix_account.so.1
Basically the pam_sample.so.1 module is used as a sample so you can learn/debug PAM, or even write your own modules, but because of the options it takes you can also use it to manipulate PAM (man pam_sample) by forcing it to return success/failure etc according to terms you set.