What we really need is someone to act as a buffer, to help liaison between the client's requests and the team, but that role was given to the client.
You will have to set-up and enforce rules or fire the client
You may never be able to have a "healthy" work environment in this situation. Your best bet is to minimize damage.
I'm assuming you don't want to fire the client. Here are the steps I would take to shield the team as much as possible.
What to do with the client
1) Assign a single person to interface with the client. Let this person know the client is difficult, and have their back in meetings.
2) Don't send anyone in alone. While there should be one person in charge of interfacing, be sure to always send a 2nd person who can step in if things get too heated, or corroborate a story.
3) Don't allow the client to talk with the team members except for the one person who is the interface.
4) Meetings with the client should be highly structured. Make sure there is an agenda. Also, make sure any bug reports or new features are documented heavily. Screenshot or videos are the best here.
5) Have a higher-up step in when needed. Sometimes just talking to an "important person" will alleviate the problem. The client will believe their concerns are taken seriously.
6) Realize you may have to fire this client anyway. The customer is not always right, and sometimes it's best if you part ways with the customer.
What to do with the team
1) Make sure everyone understands you have their back.
2) Ensure the team is working normal hours and is insulated from the client.
3) Document everything. All team communication should go through a single individual (from above). That individual exist as much to document as to work with the client. No more "off the cuff" suggestions. Document everything.
How to implement these changes
The client is a difficult client. They'll make unreasonable demands like meeting (and berating) the entire team. You (the team) have power. You need to set some boundaries.
The client doesn't work for you. Even if they don't realize it, you must put your own manager over your developers. As you've already given the client this role, you'll have to take it back as diplomatically as possible.
1) Citing new rules at the company, your client needs to talk to the POC (see above) that you've chosen. Tell them you've got to add more accountability to what is said to clients, and developers are no longer allowed to talk with them directly. This only has to apply to this client.
2) Possibly in the same meeting as the one above, address the real issue. The client doesn't seem happy with the team. The client may have some valid concerns that are causing their bad behavior. Hold firm on the above, but let the client vent frustration. You may hear the "big boss" is turning up the heat. You don't have to solve the problems but listen to them.
3) Decide if this client is salvageable. Your client has already hurt the morale of the team, and I'm guessing several developers and specialist are eyeing the door. If this continues, you will not only lose good team members, but you'll have a dissatisfied client who will bad-mouth you to the community. If the client won't change the current (broken) relationship, then you're better off "firing" the client and at least saving your team.
For this talk, go above the problem person and talk to their manager. Explain the situation that you've explained here. Since this is the last ditch effort, explain the passive-aggressive tone with specific incidents. The client company may be willing to rework the structure. If they can't make substatial changes, walk away.