I’d recommend investigating CiviCRM.
It’s a full featured CRM, that can do everything you’ve asked about.
I’m a self-taught implementer/user/admin of a CiviCRM implementation for Chase the Music – a non-profit that helps children battling critical illness, by having original music composed and performed for them. So we capture musicians, producers, performers, etc. We’re able to capture geo-info, genres, instruments, capabilities etc. Also processes event production, donations, newsletters etc. I’m not done, but can point you to resources if you need ’em. Works with Joomla/Drupal and of course WordPress. I would highly recommend it!