I couldn't read all this and not reply.
Some of the described behaviours do sound like ODD but not entirely.
I come from a teaching/behaviour management background but it does not mean I have any or all the answers.
I might however have some suggestions you could try. Keep in mind in high level behaviour management classrooms we still have to trial things with kids now and then 'cause we get one who throws us a curveball.
If anyone is interested here are some things I'd like to suggest that might help. They might also be too much work to be worth trying.
One thing that seems really silly but is infinately useful is to monitor and record behaviour for a short period (about a week). Just look at it and keep a record. You might make a chart to put on the fridge and invent a quick recording method like #yelled at mum !refused a request *acted inappropriately etc. Then just make a chart and put the little symbols in for each hour so the chart would have space for Monday ruled up in hour times and then Tuesday and so on

This seems totally useless but here's the kicker. It is amazing how this highlights when behaviours happen and perhaps what happenings in the day cause them. For some kids it's because they are hungry/thirsty (ie a certain behaviour just before a mealtime) which is easy to fix, for others before or after a drive in the car or before a "friend" comes over or is leaving etc. For some kids you ralise it's just after the TV is switched off or just prior to your usual "quiet" time and you might just need to move that forward 15 mins.
This then leaves you armed (and more prepared) to tackle changes that can pre-empt the behaviour.
The other positive is that it gives you something to do instead of react immediately and it gives you a talking point with the kid at the end of the day (or with little ones halfway through the day).

The next thing is to prepare the kid for the day.
Tell them in the morning how the day will look (including how you both might feel).
IE We have to go to do the gorcery shop and then we'll get a treat at the shops. I am looking forward to that. When we get home we'll have to put the groceries away which I hate doing but if you can help there might be time to play outside after.
The other job we need to get done is to clean the bathroom. I hate cleaning the bathroom but I will do it. Maybe while I do that you can play with X toy or read Y book.
and so on. Let them have some input as to how they might feel and what thy'd like to do. Discuss ideas.

Good luck. So much of what's happening is trial and error and just when you get a handle on certain things the little people decide they need to change their responses!
Hang in there