In a past life, I ran a consulting team at a BigCo whose business centered on T&M contracts like OP's. BigCo had 10k employees, mostly associated 1:1 to contracts with the same "bill exactly 40 hrs, but never overhead" constrains. Our little team had 100 employees, but we matrixed those guys across all our contracts. While the clients disliked the idea of not having "their guy," they really liked having access to the…
I don't get it. What did you actually do? Multiplex their time so they worked for two clients during the same hour, or what?
We simply let the team bill to multiple contracts. The contract & dev managers were responsible for authorizing the time and ensuring it was necessary/suitable/etc.
A typical T&M contract considers something around 1920 billable hours per year an FTE. 40 hrs a week, 4 weeks of vacation/sick time/etc per year. The typical way to manage those contracts at scale is hire one person per 1920 hours on a contract, then that person works exclusively on that contract.
We didn't allocate one person to a single contract, but fractions of a person - based on how much we estimated any given contract would need a certain set of skills:
"Joe's 20% on Project X and 80% on Y. Valerie's 100% on Y. Bill's 80% on Y and 20% on Z."
Of course, those are just estimates and nothing ever goes to plan - and it's always hard to hire enough good people. As a result, there were always opportunities for folks to do more work - either on their primary contract(s) or supporting another.
It makes the contract management harder, but it provides meaningful benefits to both the team and the clients.