This is one of these situations...

For me Charlies situation is clear! Call of all-in!
Had David the chance to realize that Charlie called an all-in? -> Not madatory, but with attention: yes
Had David the chance to realize that Billy is all-in? -> Yes, he just have to look around the table
What about David?
When David said "call" unfortunately he has to pay the all-in.
When David just put out a chip, TD could make an other decision (with a warning for not paying attention)
I do not like the word "penalize" in this situation!
Every player behind Billy had the same chance to pay attention and follow the game!
Every player behind Billy had the same chance to realize an all-in.
It is not a penalization when a player has to put chips out after he called a bet. It is part of the game, covered by rules (even by verbal declaration).
For me itīs fairness towards all other players of poker, who called a bet and have to pay for the call...