...and didn't do the engineering nearly as carefully as I should have. :) So the initial board has plenty of issues. But then, this started as something to do "in my spare time". That'll teach me to be more careful with my spare time.
At first I was using a PAM2421 booster because it had a nice manageable SO8 package. But it didn't work. The reason is that it is a voltage regulator that was never intended to be used as a current source. It has an undervoltage protection feature that didn't allow the chip to ever start up.
So I knew I needed to switch to a current source device, and a low cost option was to use an LED driver chip since they are produced in high volumes nowadays. The chip doesn't know it's pumping current through a stack of cells instead of LEDs. :) Unfortunately, I couldn't find any suitable/compatible options in SO8 package. I chose to use a PAM2841 in DFN package and make some small DFN to SO8 breakout boards. They work great!
The balancing is done using AZ431L based shunt regulators, assisted by some beefy PNP transistors to shunt the charging current when a cell is full. Top it off with an ultra low power MSP430 to manage the whole thing and an output MOSFET to turn the load off when a single cell has reached its minimum discharge voltage and you have a nice battery pack that should last a long time.
Work on the firmware is still ongoing but the prototypes look promising!