You can control access to contacts via a number of routes. It might help narrow down the options if you clarify what you consider to be a 'member' ie are they someone who 'pays' a membership fee to cover a specific period, or something vaguer?
One way we have provided the multi-level control that you could use is by treating CiviCRM Relationships (eg between the Branch and the Member) as the control mechanism.
So an 'Officer' who has a relationship to a Branch, can see the Members who have a relationship to the same Branch, but no other contacts.
If the Branch has a relationship to a State level organisation, which then in turn has a relationship to a Federal level (for example) then the permissioning flows up (or down), ie an Officer at the Federal level sees 'all', an Officer at the State level sees all members of all the Branches in that State.
You can read more about this Extension we made for this usage here https://civicrm.org/extensions/relationship-permissions-acls
Otherwise there are built in ACLs that can work off Groups and other CiviCRM features which you can read about here -http://book.civicrm.org/user/current/initial-set-up/permissions-and-access-control/
It may take some thinking through but I would expect CiviCRM can replicate your requirements. HTH