I get off topic ads quite often. Content of page is obvious, but sometimes G delivers totally unrelated ads. For example all city keywords are minneapolis, but all ads mention Budapest. There are no words like budapest, historic or anything similar. I visited the site from another city, cookies history etc were erased. Question: Would you ban all those ads to increase performance? Banned an arizona ad which was being shown on all cities. Not sure if it helped.
I would put a competitive ad filter and block the urls to start. You might also try some "geo" metas <meta name='geo.placename' content='Minneapolis, MN' /> <meta name='geo.region' content='US-MN' /> I can't take credit for this, but greenway posted this awesome resource in a thread earlier today that you might find useful https://www.google.com/support/adsense/bin/answer.py?answer=23168&topic=371 that deals with "highlighting" sections of your html code to push relevancy in optimizing your adsense - give it a look.
No, I wouldn't bother blocking ads. Sometimes relevance isn't everything. It is highly likely that arizona ad was performaing well and that's why it was being served a lot. Now you've blocked what was likely a good performing ad.