That's pretty malty for a pilsner. I'd say you had a stuck fermentation on that one. Next time around, add yeast nutrient, pitch the right amount of yeast and properly oxygenate the wort and you should break the 1.020 barrier.
Now, as to your haze. It's either chill haze from too many proteins in your beer or yeast haze. It's easy to tell the difference. If the beer is relatively clear at room temperature and then clouds up after you chill it down, it's chill haze. If it's cloudy all the time, it's yeast haze. Here's how you solve the problems:
1) Make sure that when you boil your wort you reach a hot break. That means, boil it hot so that the wort foams up for a few minutes and then eventually breaks and subsides. This causes a lot of proteins to settle out of solution.
2) Make sure you chill your wort quickly. This is easily achieved with a good wort chiller with cold water flowing through it. Add the wort chiller to your boil pot with 10 minutes left in the boil to sanitize it, then pump cold water through it at the end of the boil to bring the temperature of the wort down as quickly as possible. This also causes proteins to coagulate and settle out of the wort.
3) Use a fining agent such as isinglass or a whirlfloc tablet at 15 minutes left in the boil. I prefer whirlfloc because it's easier to work with but either one works. This will further cause protein to clump and settle out.
4) Use a post-fermentation fining agent. My favorite is KC finings. It's a two part liquid fining agent. One part is liquid ketosol (sp?) and the other is liquid chitosan. One's positively charged and one's negatively charged, and will cause haze to completely settle out. Gelatin also works well.
5) Cold crashing and patience works best for removing yeast haze. Chill the beer down to 35f and wait for the yeast to go dormant and settle out to the bottom. Rack the beer off the yeast and keg.