It's not hard getting ringtones on your iPhone. You certainly don't have to buy them. If, however, you'd like something a bit more customized, there is a nice app called AutoRingtone Pro Uncensored.
In a nutshell, it lets you pick out what the ringtone should say. It can be just an announcement about who is calling, like "Your friend Bob is calling from Las Vegas" or it could be a bit more insulting like "Your dumb buddy John from Indianapolis is on the phone". Basically, it takes what you've written and converts your text to speech in a voice you have selected.
Here's how it works: Type what you want the phone to say into a field. Then choose a voice, like British female, quiet whisper, American male and so on. You can also precede the message with a sound, and there are about 200 to choose from.
When you're ready, the instructions you've given are sent to a server (you must have internet access) where the ringtone is rendered. You retrieve it from a special website, and drag it into iTunes to get it on your iPhone. There are no fees or subscriptions, and you can make as many as you want.