Declude and Declude Reboot can be easily configured to do those checks against any standard RBL service
Declude's redundancy optimizations seem to prevent asking the same question of different RBLs, so I am planning to use a Python module within Declude.
This is most efficient if you are willing to do silent discard. Declude has an option to stop processing on first delete. Note that t cannot run in the SMTP session.
Another option:
I found that 66% of all messages are for non-existent or terminated accounts. So I do recipient verification and discard messages with no valid recipients. If you do the same, your Spamhaus query counts will drop accordingly.
Implementation note: on an hourly basis, I copy my active user list to a database, the ln Declude checks the database for valid users. My first attempt queried directly from the inbound gateway to the post office server, but I realized that was putting too much strain on the server that I was trying to protect.