Vinegar does not set dye in non-protein fibers such as cotton. Vinegar sets dyes in protein fibers such as wool, silk, animal fur, human hair, and for some odd reason, nylon.
To keep from having to wash them as often, put them wet into a microwave for 30 seconds. That will kill all the bacterial and keep them fresh. They will still stain but, hey, they are working cloths. And boy do they work, and work, and work, regardless of what they look like.
When it gets too much to deal with, soak in a mild bleach solution. Yes, this will fade the color even more, but it also helps remove many of the stains.