It would be nice to see this one solved. I know nothing about databases
Couldn't you add another field or to store the info, free or paid, then check it at renewal time or something along those lines.
I suppose that when a users free ads move to sold or are deleted, then the renewal on a paid ad should move to free when its time comes.
This could be a good step towards a user having and keep his free ad regardless of if they purchased more ads.