Dns66 or Blokada for non-rooted and AFWall+ for rooted, the last one is a firewall but you can modify the iptables easy including the exact dns server that you wanted and other cool stuff, since android lollipop the best way to set DNS is to iptables
If you are rooted:
Just modify the hosts file (Adaway). No brainer choice
If you're not rooted:
Modifying DNS is simple and quick but only works in wifi network. Also, no element hiding supported.
Using an adblocker like Blokada supports element hiding and lte but will create a VPN connection constantly running in the back. No perfect solutions here.
I was doing my own research last few days and stumbled upon Blokada. It's a lot better than DNS66 which I found to not always work and then Adguard where it killed the battery, plus some other Certificate issues.
Based on my short time using these "adblockers for android", I also recommend Blokada.