Why did the runtime on battery drop to 30-50% with a good battery, with no system updates to blame?

Solution 1:

TL;DR: If SystemUiServer causes about as many idle wakeups as kernel_task and you have iStatMenus, turn off all of iStat's widgets, then turn them back on. If you don't have iStatMenus, suspect other menubar widget applications. The SystemUiServer should have <10 idle wakeups.

I have another hardware-identical machine running El Capitan 10.11.6, and it doesn't suffer from excessive battery drain. When comparing the Activity Monitor CPU panes, ordered by Idle Wake Ups, the entries are similar, except that the SystemUiServer entry has very low wake-up counts on the El Capitan machine, and 100x higher counts on the problematic system - on par with kernel_task and in 300-500 range.

A search for issues related to SystemUiServer prompted investigation of widgets installed in the menu bar. On both machines, the additions over stock install are: iStatMenus 5.31, Caffeine 1.1.1 and OS X's Keychain lock.

Upon disabling all widgets from iStatMenus settings pane, the SystemUiServer became idle. Re-enabling the widgets doesn't bring the problem back. Further checks after a reboot and then after a shutdown-restart cycle show that the problem didn't come back.

The battery life is now normal. At idle, with screen at minimum brightness, and google.com open in Safari 10.0.3, coconutBattery 3.5.1 indicates a discharge rate of ~10W.