Yeah, that's all fixable. Initially you'd said you had markers 1-10, so I didn't know you had a 0-marker, as well.
Also, the math is being done on the first selected token, then applied to them all. The way to get around this is to use a 'forselected' handle on the whole thing, and iterate over the selected tokens...
That would look more like:
!forselected(^) token-mod --set statusmarkers|-Buff-globCur|+Buff-globNew {\^&global ([globCur]{^&if @^(selected.is.Buff-0)=yes}0{^&elseif @^(selected.is.Buff-1)=yes}1{^&elseif @^(selected.is.Buff-2)=yes}2{^&elseif @^(selected.is.Buff-3)=yes}3{^&elseif @^(selected.is.Buff-4)=yes}4{^&elseif @^(selected.is.Buff-5)=yes}5{^&elseif @^(selected.is.Buff-6)=yes}6{^&elseif @^(selected.is.Buff-7)=yes}7{^&elseif @^(selected.is.Buff-8)=yes}8{^&elseif @^(selected.is.Buff-9)=yes}9{^&elseif @^(selected.is.Buff-10)=yes}10{^&else}0{^&end})} {\\^&global ([globNew]{\^&math ?{Add or Subtract|Add,min|Subtract,max}(globCur{^&if ?{Add or Subtract}=min}+{^&else}-{^&end}?{By How Much|1|2|3|4|5|6|7|8|9|10},{^&if ?{Add or Subtract}=min}10{^&else}0{^&end})})}
...which is a bit harder to read than the previous version, but is essentially the same except 1) reduced to a single line, 2) token-specific references and logic have been deferred so they don't run as a part of the parent message, and 3) allowing a 'Buff-0' marker
EDIT: To get things straightened around the first time, you'll have to remove the extra markers manually as this command only removes the *first* Buff marker it finds before adding the new one. Once everything is in sync, you shouldn't get those extra markers applied.