Okay, i did some testing on it. (still 0.17 version. My efforts may be completely unwarranted in 0.18 version but I wanted to try it anyway). I have mixed results.
I tried a simple script that queries all machines in the player visible range (is there a way to get zoom? I had to use lowest zoom value) and draws a rectangle with color based on entity's status. Also the way i've written it is terrible for multiplayer, and I'm not sure if anything can be done about that.
https://pastebin.com/KN9NmxL9
I tested with 2304 furnaces (9 full chunks) in a creative world (otherwise empty). Curiously bottleneck takes about half the time for an update compared to a real world (hovering around 0.3ms).
My approach has, as expected, quite bad performance in areas with a lot of machines. When all 2304 furnaces are visible one update costs ~40ms, so ~0.7ms amortized per frame (around 2-3 times that of bottleneck in this particular world). It would require some clever work splitting to prevent lost frames.
When no entities are in player's view the script takes negligible ~0.004ms. Whereas bottleneck has a constant overhead.
I will maybe try to do some tests on a real save later.