AdGuard does have a “lifetime” subscription which is effectively a one-time purchase equivalent. Wipr was good back when I tried it (last time was probably 2yrs ago). Good to know the dev is still active and working on a sequel.
If you already rely on DNS filtering, you could just use dedicated element or inline script blocking extensions to handle those bits that get through. This is what I currently use on my iPad (no experience with Mac, sorry), in case you’re curios;