since oxidation number assigns an imaginary "charge" to each atom, it is not neccesary for S in Na2S2O3 to have several charges. just the average will do. i think +2 would be ok.
as for the CN- thing, one main rule is that the atoms outlined in brackets have their own special charge, and this is where covalent bonding is displayed. so for common anions like CN-, NO-3, SO42-, u'll need to memorise their overall charge and not the charge of the individual atoms.