This is a tough but interesting problem. After some googling, I came upon a python implementation of the algorithm produced by Grundland and Dodgson (
https://github.com/damondpham/decolorize-RGB2grayscale). I haven't tried it, but it looks promising. It probably doesn't do anything about saving toner, so maybe you can make simple adjustments first before converting the image with this algorithm. Good luck!