Duplicate content has become an increasing problem on the Internet and to combat it search engines are tweaking their algorithms. Normally this means the site with the original content is safe, and all the scraper sites that take the content get punished, but the system isn't perfect. Sometimes as well you may have legitimate duplicate content but could still be filtered out.
If the pages or sites that are missing (or very low) from the results do not have unique content you need to rectify this. You do not necessarily have to get rid of the generic content, but you do need to add something to it or change it to be more unique. You can have it rewritten or reformatted. You could also simply add something such as user comments to the bottom allowing users to provide feedback on the content, and of course that feedback will be unique.
If your content has links to many affiliate programs consider masking those links with redirects. Search engines have come down hard on what they call "thin affiliate content" and many links to well known affiliate programs on a single page may raise red flags with them. Likewise if you do have thin affiliate content (content consisting of nothing but affiliate program content such as datafeeds or generic product reviews and links) you should change it, reformat it, or add some unique bits of content to spice things up.
Of course, even if you think your content is unique, double check, someone may have ripped you off.
If you have been thinking about a new design now is the perfect time to do it. Especially if your site's code is old and antiquated. Not that new CSS heavy or table-less markups are vastly superior and search engines like to know your standards complaint and give you a bonus if your site validates or anything like that. Search engines could care less if you're using validated standards compliant markup. Rather CSS heavy designs tend to do well because there is vastly less markup in the source code to drown out the content. Remember search engines don't read a rendered page, they read the source code, and having clean source code with little markup and mostly content means the search engines will be reading mostly content; a very good thing indeed.
Additionally a new design will usually significantly change the source code of every single page on your site, and in my opinion there is nothing better than a new design to say "Hey search engine, I've changed, come reindex me."
Changing hosts, and specifically changing IP addresses, can be helpful for a number of reasons.
Firstly, IP based bans do happen and when you're on a shared IP and someone else gets that IP banned it'll hurt you too. This isn't a common occurrence, but it can happen and when you're losing money the relatively small inconvenience of switching IPs or hosts is well worth it.
The other thing is that the host could have accidentially banned Google at the firewall level for whatever reason. For instance sometimes hosts ban unused IP segments and when those segments are bought and used they aren't automatically unbanned. Though if that is the problem you would have been able to figure it out in Google Webmaster Central.