I think I understand the problem. So, the solution which comes in my mind:
1) you want all the time monitor both parameters, Input Echo and Record Arm. It is not possible in the button actions list since it is controlling one parameter in time. The monitor there is to indicate exactly that parameter, whatever it is at the moment. But that is not what you want. So, you remove Value monitors from buttons.
2) you need separate monitor for each parameter, so you create fake controls "Input Echo Strip 1", "Record Arm Strip 1" and so on, which use the same strip selection as in buttons but select exactly one parameter (all the time).
3) Then you define Software Set for each button "BtnColor_1" with state "Off_Off", "Off_On", "On_Off" and "On_On".
4) in Value Monitors you set the states (do not forget to set "Engine" flag there), taking current state into account. So, in "Record Arm Strip 1" value monitor you need 4 Actions instead of 2 "(Value:0, BtnColor_1:Off_On) -> BtnColor_1 = Off_Off", "(Value:0, BtnColor_1:On_On) -> BtnColor_1 = On_off", "(Value:127, BtnColor_1:Off_Off) -> BtnColor_1 = Off_On", "(Value:127, BtnColor_1:On_Off) -> BtnColor_1 = On_On". You do not need "Value:127 XX_On" and "Value:0 XX_Off" since the state is correct.
5) In addition to Value Monitors you also add State Monitors, one per state (button). You can add it at the beginning to "Input Echo Strip 1" (before strip selection, it is state monitor). In each state Monitor you send SysEx based on the state.
Set priority "1" to Value monitors and priority "2" to State Monitors. That way value monitors will trigger state monitors guaranteed during the same monitoring cycle. We could send SysEx just in value monitors (after setting the state), but that will produce a "color flickering".
How it will (should...) work, also at startup and mouse switching: value monitor check the value and set corresponding state, which in turn triggers state monitor; then state monitor send SysEx based on the state (which was set correctly by both value monitors). States Monitors are triggered on startup (as you can remember that was fixed), so SysEx is sent even in case State is equal to default (Off_Off). Priority makes the procedure order predictable (so, check both values before sending SysEx, otherwise something like Input Echo=On (Record Arm=Off as not yet checked) can trigger false color till (next cycle) Record Arm is checked, introducing some "color flickering" after initial preset load and strip bank changes.
For 2 pads on 8 strips which control 2 parameters each you will need 8x4=32 extra controls, 16 state sets and 32+16=48 monitors. Just for 16 buttons. It sounds like a lot. But since you want 32 parameters parallel indication, the overhead is x2 only. I do not think I can optimize that. And you get some functionality no one had before in SONAR