I don't see how it's possible for it to show Expired and Active at the same time as they're 2 completely different states stored with the subscription unless it's a language string bug of some kind. Is the plan a free lifetime plan? If so be sure to configure free lifetime plans to create subscriptions within CBSubs > Settings > Global.
To restrict upgrading to a plan to a specific field you'd use the below condition under the Workflows tab of your plan.
Propose plan for upgrades only if it is more expensive: No: It will be possible to upgrade to this plan (for free with pro-rating) if all conditions below and elsewhere are met
Static Conditions on already existing subscriptions and CB Fields and Dates to allow upgrades
First static condition: This condition must be met to allow upgrades:
Date A, Field A or Value A: Following CB field
CB Field A: SELECT_FIELD_HERE
Date B, Field B or Value B: Constant Value or String (CB substitutions can be used)
Value B: VALUE_TO_MATCH_HERE
Condition 1 (> for Dates): A = B (Value A is equal to Value
With the above example the field SELECT_FIELD_HERE must have a value equal to VALUE_TO_MATCH_HERE in order to upgrade to that plan.