The "self heating" aspect really narrows down your choices. All of the BMS's I've ever tried to get the heating functions to work have failed horribly.
What I've gone to is just getting a thermostat and pet heating blanket and setting the start/stop temperatures for those. That way it actually works and I can start heating the cells BEFORE it gets down to the low temp cutoff point.