To address some points from the OP:
The food stealing is constant but opportunistic, we never leave food out but he will grab food from people's hands
Keep the dog in a separate room or crated when people are eating. Then work on the food aggression in a controlled environment. A trainer will walk you through this but while you are waiting for the trainer to get back to you, you can start by standing however close to the food bowl the dog will allow while he's eating (if he growls, you've gone too close, step back) and toss a higher value treat into his bowl. Slowly go closer until you are able to place the food into the dish by hand, always backing off again if the dog growls.
For the sofa, the dog is comfortable and you are disturbing him. Stop allowing him on the sofa. Start by teaching 'OFF'. Using a houseline, guide the dog off the sofa and treat when he's on the floor. Repeat until the dog gets off the sofa as soon as he's back on it, couple the behaviour with the command OFF and treat. Whenever the dog gets on the sofa, tell him to get OFF. He'll soon learn the sofa is out of bounds.
You might later be able to start inviting the dog onto the sofa if you want to, depending on how much he trusts you and how well the training goes.
Teach him to love his bed more than the sofa by hiding treats in it and randomly dropping treats onto his bed while he's in it. His bed will soon become more interesting to him than the sofa. Make sure he has a safe place he can escape where all the family understand he is not to be approached or disturbed. Call him out of the bed if you need/want to interact with him.
Please note that this advice is not to replace a trainer. I can only guess at what the cause of the aggression is based on what it's most likely to be. A trainer will see first hand what is causing it and how bad it is and will give you an in depth, personalised plan to deal with it.
Hire a dog walker for the weekdays.