How to show Users their Membership status so that even users without a membership status get to see the block
I believe you can connect your civiContact view to the membership fields without using that smart group.

I have had success (in views 3) in the past with a civiContact based view using a relationship civiCRM Contacts: Drupal ID and a contextual filter User: UID that is configured to provide a default value from the logged in user when none is available.

Then you can put in civiCRM member status field with a relationship to the logged in Drupal user with your other contact fields and filters and configure the no results behavior from there.