Completely refactor dynamic stuff. Get rid of "mode", split it into 2 new toggle settings, that can be configured independently:
"Dynamic Visibility" - whether or not crosshair gets hidden when aiming/alt-looking/etc
"Dynamic Spacing" - whether spacing changes to indicate accuracy
Hook them up to settings menu & crosshair code packing