You don't have to rely on generic punishments like time out, smacking, etc - just do whatever feels right at the time (a more consequences based approach). So as I said I would use time out if I felt DS needed time to calm down but not to punish something else, and it doesn't matter if there is access to toys etc, it's just removing from the situation, if he goes to his bedroom and finds something to do there then great - he's not causing trouble in the kitchen any more!
Consequences-type punishments tending to be if he is playing inappropriately with a toy (e.g. being too rough with it so it might break, or hitting someone with it) then the toy gets confiscated, if he's too distracted by the TV to sit down and eat his dinner, (and I know TV during dinner isn't great but it was a habit we got into when I was first on my own with him and he wouldn't eat at all) the TV goes off, all of these with a warning of course.
You can also do straight consequences which aren't a punishment necessarily but help to make the wrong thing right, like if he's tipped all his toys out then you comment on what you can see, rather than his behaviour - "Oh what a mess!" - then why it is a problem - "I can't even walk through here now, and you have no room to play" - then what he could do to make it better - "Let's get this cleaned up" - as he gets older you can explain that you're busy and you don't have time to help him clean up every time he tips the box over. Stating what is wrong rather than saying You've made a big mess etc tends to reduce the defensiveness and avoid the defensive cycle where they start saying "It wasn't me!" or "I didn't mean to!" etc where you end up frustrated and shouting and possibly punishing them for lying or backtalk or whatever - if you just state the problem and then quash anything with "It doesn't really matter, it's done now. Let's put it right and then try not to let it happen again, okay?"
Also lots of behaviour management - distraction from things you don't want him to do, redirection (You can't hit your friend but you can bang this drum, you can't throw toys but you can throw this balloon), explanation about what they should do differently another time (If you feel angry and want to bite, you come and find this teething ring and bite it as hard as you can/People are not for biting. This is for biting. - Tailor it to his speech and concentration level). Model what you want. If you do slip into shouting and he gets upset, apologise for shouting and give him a cuddle if he wants one, then when he is calm repeat in a calm voice what it was you wanted to say.
You mentioned as well that he will often fill up on snack foods like fruit rather than eating proper meals. I got into a pattern like this with DS because he hardly ate, and I just took any opportunity to get food into him. If your DS really is eating the equivalent of 19 bananas, he's clearly not starving himself and doesn't like to feel hungry, so it might be a good time to start this approach - be stricter about mealtimes and snacktimes. Decide what time your meals are going to be - a good guide is 4 hours apart, with snacks at 2-hour intervals in between. So give him breakfast no later than 9am, let him eat as much as he wants, but appropriate breakfast foods. Once he finishes eating, no more food until snack time at 11ish. It isn't long for him to wait, even if he's eaten nothing. If he has skipped a meal you can always give a bigger snack portion. Then lunch no later than 1, afternoon snack at 3ish, tea no later than 5, maybe a small snack before bed if he needs it (milk might be enough if he still has milk.) If you know that he's going to have a snack or a meal in an hour or so it's easier to tell him he has to wait even if you think "Oh but he's really hungry!" - and actually when I did this I thought DS would be awful and cry and scream about not being able to have food when he wanted it, but actually he wasn't that bad at all. And now he's used to it I'm able to be more flexible about mealtimes, though the 5pm tea is very important or he's too tired to eat properly, I find, although he doesn't nap in the day now.
Anyway I've typed loads
hope some of it is helpful.