I get a few hives every once in awhile and it is usually either caused by a food allergy or stress. I use an anti-histamine and cortisone cream. My 6 yo granddaughter, who has asthma and eczema, has had hives all over trunk a couple of times when she took a bath at my house. She'd poured soap in the bath to make bubbles. I gave her benedryl and smoothed cortisone cream all over them. Later I asked the dr and she said that was exactly what to do.
I have a friend, who was 40 something at the time, who had what looked like hives covering his back. The dr told him it wasn't hives and was a rash most likely caused by stress. I don't remember what medication he took. I think the reason it wasn't hives is that the spots were continuously there and he could not find anything that his skin was reacting to. Sounds like your son's come and go and so are more likely to be hives.
But I do know that stress as well as allergies or skin sensitivity can cause hives. If I were him I would go to the doctor to just be sure that it is hives since he's getting them frequently over a period of time. An allergy can progress to anaphalactic shock which can be fatal. The doctor may be able to give him a more powerful antihistamine. If it's stress perhaps an anti-anxiety medication would be in order.