Is there an interactive calendar widget that allows me to switch between agenda view and calendar view?
Agenda Widget Plus allows a user to do this easily.

As far as full scale calendar app replacements go, give the excellent Jorte Calendar a try - it too has loads of widgets and many customizable settings.