U.S. Customs and Border Protection operates an Airport Wait Times website where you can retrieve reports about average waits at different times of the day at different airports. (Note that this is for CBP processing, not TSA security screening, which has a different website).
At Terminal F at ATL for this past Monday, for example, the worst non-citizen maximum wait times were reportedly from 0500-0600, at 75 minutes, with 3 passengers (both US and non-US citizens) having to wait more than an hour. For what it's worth, that's better than 1500-1600 in Terminal E, when the max wait was 79 minutes with 88 people queued up for over an hour.
Based on your routing, I would guess you were connecting onto a Delta flight. Both ATL and SLC are Delta hubs, with flights between them departing every hour or two throughout the entire day, so I hope you were reaccommodated without too much hassle. The fact of this schedule may even have influenced the time Virgin Atlantic thought would be sufficient, especially if only a few people on the intended SLC flight are non-US nationals making international connections.
For comparison, the minimum connection time for a Delta-to-Delta international-to-domestic flight is reported by FlyerTalk as only 85 minutes which, in my experience with Atlanta, sounds optimistic to say the least.
Airlines have little interest in having their passengers miss flights, and minimum connection times are (probably) not fabricated from whole cloth. But as the saying goes, past performance is no guarantee of future results. There can be flight delays, or computer or staffing problems, or a couple of 747s may enjoy light headwinds and land just ahead of you. If arriving late will have a cascading effect on further travel, adding a little padding doesn't hurt; it's often advised that people flying in for departing cruises should plan to arrive the previous day.