In addition to being able to define a static number of weekly hours in a timeframe that a member is available to certain teams, there should be a possibility to allocate people dynamically between teams based on the priority of items in the backlog and where the skills are mostly needed.
Possible solution approach:
1) Introduce a field of total weekly hours for a person (not per-team but on the person as an entity)
2) On the weekly hours field, be able to switch between static and dynamic. Static does the same the current implementation, i.e., allowing to specify weekly hours statically allocated to this team in a certain timeframe, dynamic means that the person can be allocated up to the total available time to a team, but across all teams not more than the total weekly hours. Additionally, it should be possible to specify a range, e.g. "can be allocated up to 50% of her time to this team"
The scheduling algorithm, when scheduling by priority order, allocates these flexible capacities greedily to the most important items, i.e. to get something with high priority done first, the according team will get the person allocated by as much as possible.
This means, people could switch from sprint to sprint flexibly between teams, in Kanban mode even from day to day, working for team A on one day, and team B on another day.