One of the sources of off-flavors is stale extract. How fresh were the kits? What were the expiration dates on the extract? Or, failing that, when were they produced?
I know people producing excellent beer using extract, so it's not a certainty that extract brewing will result in the "twang." But Twang is a common-enough characteristic that there has to be circumstances creating it. I think, as was noted above, the two most likely sources are the water and the extract.
About the water you used (other than the RO): is it chlorinated? Did you do anything to get rid of it (boil it ahead of time, use a Campden tablet)?
It's been said that if your water tastes good, you can brew good beer, but that's untrue in the absolute. Mine tastes good but it's chlorinated, which imparts an off-flavor unless dealt with.
Some other things that may be contributing (noted above but worth repeating):
Sanitation. How clean is everything? How are you cleaning and sanitizing?
Fermentation temperature. How are you controlling this, if at all? Most beers fermented too warm (there are a few exceptions) will produce off flavors. I have a beer fermenting right now; I locked it in at 64 degrees F, ramped it up to 71 for a couple days after primary fermentation was complete, and now back down to 64 to finish.
It's been said by many that one of the most effective ways for brewers to improve their quality is by controlling fermentation temp. They're right.
And what's more: the ambient temperature in the area the beer is fermenting is not what you need to know; yeast, when fermenting, is exothermic, meaning it produces heat. The fermenting wort can be 5-10 degrees higher than ambient temperature due to this, so you must focus on the temp of the wort, not the temp of the surrounding environment.
Finally: my water is so minerally that I mostly use RO water. I'll sometimes cut the RO with a gallon or maybe 2 gallons of tap water, depending on the required water composition, but I still treat it for chlorine.