A few observations:
1. Is D3 really needed? Correct me if I'm wrong, but if CHRG+ is missing, then 5V is also missing and relay is not connecting CHRG+ with BAT. Where is the problem? Got it.
2. Your 5V goes through D2. So it will not be 5V. If 5V is used as ADC reference, your ADC readings will be inaccurate and inconsistent. Why D2 is there?
3. If you want, you can simplify BAT voltage divider (without mosfets). You can use high value resistors, for example 100k + 33k (or even higher) and add a small capacitor for low impedance. BAT voltage is not changing fast, so this low pass filter will not harm reading, it will only improve it with possibly lower noise. If the divider current is lower than battery self discharge current, it will not affect the battery much. 100 microamps or less is really ok.
4. Add a few bulk (electrolytic) capacitors. At least on battery connection, charger connection, 5V rail near MCU. Even 47-100uF should do. The thing is that where are wires (inductances) and currents, voltage transients may happen. It is generally a good practice to have electrolytics here and there, not only ceramic capacitors.