Your son's behaviors do also sound to me like high-functioning autism (PDD-NOS, Aspergers). I have three children on the spectrum, and two with behaviors that manifest similar to your son's. The doctor we are currently seeing (who is brilliant BTW!) said that 95% of kids with ASD have symptoms of ODD. They are oppositional in response to being constantly overwhelmed and confused and frustrated. The world doesn't make sense to these kids! Their brains work differently. So they try to make it make sense and attach themselves to certain expectations and then when that doesn't happen it just feels like everything is coming apart. ASD kids usually have a terrible time with transitions, changes in plans and schedules, and things not turning out how they expected. Their emotional response is often out of proportion to the event. They can express this physically through tantrums (hitting, kicking, screaming) and verbally through "ranting and raving" ("everything is horrible, you never _______, you always _________, you don't care about me, I hate life! etc) My oldest does that outwardly - lashing out at me and others, my youngest with ASD does that inwardly, lashing out at himself.
You describe that your son is starting to have social problems. Its common for higher functioning kids to have social problems in later childhood while perhaps not in early childhood (or at least not in ways that seem obvious to us). The nuances of social interaction become more complex as children grow and children with social delays start to struggle as that gap widens between them and their peers. School and home pressures also begin to increase as we expect more of the child. They start to crack under the pressure and symptoms previously unnoticed really start to show through.
It also sounds like your child has sensory issues relating to touch (tactile) and food (gustatory). Rejecting (loudly) the sunscreen is a tactile sensory issue. Eating only crunchy brown or white foods is extremely common in kids on the spectrum. We call it the "beige" diet. My oldest with Aspergers at that age would only eat milk, cereal, chicken nuggets, fries, grilled cheese, cheese pizza (his only source of veggies was that red sauce!), and toast. Maybe an occasional grape or slice of watermelon (both crunchy-type fruits). Being "addicted" to dairy and wheat based foods is also extremely common. And it may (or may not) be to blame for some of the outbursts. The damage to his gut from food sensitivities and a limited diet makes him less likely to absorb nutrients from his food, and the proteins in wheat and dairy aren't properly broken down and can leak into the bloodstream and get past the blood/brain barrier and cause all sorts of behavior issues. Weak liver detox (from both a limited diet and possibly heredity) make processing food chemicals like additives and dyes harder and also can lead to behavior issues.
I truly understand the heartache and struggle that can ensue with food issues. I was not able to conquer it with my oldest. He was 13 by the time I learned about this and we tried but I couldn't take the ensuing tantrums of an adult-sized kid. But at 7? You betcha I'd do the GFCF diet it in a heartbeat. I am doing it with my 11 year old. We cut out all dairy and gluten about 8 weeks ago and he is a different kid. Seriously. Went from having those "angry at the whole world" episodes daily to maybe 2-3 X a month. You have to stick with it and you have to be prepared to endure the withdrawal behaviors, but its so worth it. Our health plan is very similar to another poster - GFCF diet, no food dyes or preservatives, plenty of sleep with melantonin if needed, a simple home life with a predicable schedule (the last bad tantrum my DS had was after a marathon shopping trip), eliminate screens and media (this triggers aggression and irritability within hours), and getting exercise and sunshine (if you can find it lol). I agree with the other mama that nature walks, bike riding, and swimming have a centering effect on the brain. But again, make it simple, and predictable. Communicate clearly the when, where, how long, etc. Stay away from "overstimulating" environments like shopping centers, children's museums, and such for while. If you need to do it, keep it short.
I would highly recommend that you ask for an evaluation at his school. I think with a child this unhappy, this severely affecting family life and dynamics, you need the support a "label" provides. I doesn't mean you need to put your child on meds or in therapy. It just means you know from which sources to find your information. Ask for an ADOS from the school psychologist. This will give or rule out a diagnosis of ASD at no cost to you. If your child is on the spectrum, you need to know. You will have to adjust your parenting and your approach to him at home and school to give him the best chance at success. Its better to do this sooner than later. If not, then you can move on to other approaches, perhaps seeing a psychologist to evaluate for mood disorders, ADHD, etc. And unfortunately, it is possible to have both ASD and co-existing conditions such as bipolar. But everything will be colored differently if a child has autism so that is the first step, IMO. Big hugs and hope you find your answers soon, mama.