There are very few options to do this correctly. Balance charging LiPos is tricky. It becomes even more tricky if you want to pull a load while charging, aka BMS.
Probably the simplest solution is to charge the pack as is, eg. 16.8V, put a resistive load switched with MosFets on the balance leads to each cell, but you need to measure individual cell voltages very accurately and switch the mosfets to discharge the high cell while at the same time lowering the charge current to the pack to something that allows the resistive load to keep up. This solution is what is used in LiPo chargers, but they are typically short cycle devices, you connect them, charge the pack for under an hour and disconnect them. This is important as resistive load balancing will discharge the pack if left connected for a prolonged period.
If you don't need high current output, you can charge individual cells via the balance leads only, but the voltages required are not easy to produce accurately. If for example you want to put 4.2V to Cell 3, then you need to add that 4.2V to the voltage produced at Cell 2's + end. So you need to switch in, say, 8.2V to Cell 3 - and 12.4V to Cell 3 +.
Very often people making custom projects just give up and switch to putting the cells into parallel config giving 3.3-4.2V and use a boost converter to get the higher voltage required. Which is probably the better option for a homebrew BMS.