Well I'll tell you guys what worked for me after a day of frustration.
First, a rundown of my predicament.
I try to buy a ringtone for my newly purchased iPhone. It asks me to confirm my billing info. I get the magical "Security Code Invalid" warning. I go on my PC and now get the same warning even though iTunes has charged me in full only 5 days prior to this. No outstanding balance, card is legit and not expired, plenty of room on the card for charges, etc.
I call Apple, blah blah blah, they tell me to call my bank, which I do. The bank confirms that the card is just fine, no flags on it for fraud detection as the 2nd level support guy insisted the problem was. Called Apple back they have no idea what the problem despite me even showing them this thread in an email to the support techs I was talking to. I do all the usual stuff like setting billing info to none, resetting passwords on iforgot. They tell me to call the bank back and tell them to force an authorization on the my card. Bank lols at me heartily and suggests that what they can do is issue me a new card. I say no thanks. Call Apple back and they basically tell me tough cookies buy an iTunes gift card if I want apps and music.
Anyway, sorry for rambling. I decide to return my iPhone today and go back to an Android phone, this Apple customer service has been a joke. I decide to uninstall iTunes from my PC altogether when it hits me to do a fresh install. I reinstall, even though my info is all still there I had uninstalled it when I had the billing set to none. So I go back in, enter my billing info and it worked. I got on my iPhone and tried to buy the ringtone and it let me.
In my case, I'm sure adding the new device (my iPhone) caused the glitch. This seems very obvious and shouldn't be that hard of a fix. I don't know if my solution will work for anyone else but if it helps one more person get over the frustration this caused me it was worth the time to post.
tl;dr
uninstalled iTunes with none selected as the payment option. Reinstalled and filled out my information and it worked fine.