Assuming that the softphones use a unique range of extension numbers, set up a Time Group that is true at the times when calls are to be blocked, then set up a dummy Outbound Route (no trunks) with CallerID pattern that matches the softphone extensions and specifies the new Time Match Time Group. Put this route ahead of the regular routes but after any Emergency routes.
However, IMO technical solutions to social problems usually don’t work well.
If you’re in a developed country, your staff likely have mobile phone plans with unlimited talk, so there is no incentive for them to use the softphone for a domestic call. The softphone call will show a company caller ID that their personal contact may not recognize. If you record all calls, only an idiot would make personal calls on the system. Even if not, you have a log of all calls and could reprimand or discipline an abuser.
Calls to expensive countries could indeed be a problem, but (depending on your business), you might require a PIN to those destinations, or block them altogether, even during business hours.
Actually, there’s your problem solver. You only have to play back one improper phone call in a staff meeting to solve the problem. Anyone that does it after that, let them know their personal calls will be available to anyone that wants to hear them. If it happens twice - write up and ineligible for promtion. Third time - monetary fine. Last time - terminate.