1. Not any that should be avoided necessarily but you do have plenty of choices. Rederij Kooij on the Rokin is the best value for money. The dinner cruises leave a lot to be desired.
2. With only 4 days I would focus all my energy and time on Amsterdam. Haarlem is only 15 minutes by train from Amsterdam and is a good choice for a day trip.