You could script the creation of a new SharePoint VM and the automatic joining to the farm as a WFE. You would then need to somehow let your load balancer know about this new node. While technically possible, this would be pretty complex and very fragile.
Your second idea sounds a bit easier. Just because a server is configured as a WFE doesn't mean you need to send traffic to it. You could have these extra servers waiting as hot standbys. The trick would again be telling your load balancer to start using them when the need arises. Assuming your customizations are deployed using solutions, by virtue of being part of the farm these extra servers will be already be synchronized when they become accessible.
The problem with all of this is you still have a bottle neck at your database layer -- adding WFEs will allow you to serve up more requests, but these servers still pull all their content from your SQL Server. You will need to ensure that your SQL Server can handle this increased load or your entire farm will melt.