I hate to give you the ambiguous answer, but you are correct--it IS a three year old thing. My suggestion would be to give her context for her actions and a place to be alone, if possible. This might mean gating her into her room when she's screaming, redirecting her ("If you want to throw, we have balls for that"--use crumpled up paper balls if you don't have any soft ones suitable for indoors) . Hitting is not-negotiable: carry your son with you and, if possible, include her in the process of getting an ice pack--she can help hold doors open. OF COURSE--only if she's able to do this safely. If not, she's going to have to go to a safe place and cool down. If you are really stuck, consider using a portacrib.
Some people are going to have different advice, and that's fine. I haven't read any posts yet. I'd be very wary of spanking, however, because it only teaches children that hitting has power. I prefer to ask upset and angry children to tell me about their feelings and then try to help them solve their problem. Sometimes (not always) empathetic, reflective words (Wow, you are really upset! I can see that! or "I'd be mad too!" ) are helpful. What I would hold back on, however, is talking too much or trying to make the child see our sense of the situation/try to reason with them when they are angry. This is wasted breath on our end, because they are not at an age of reason developmentally (this comes around 5 or 6) and it's just likely to feed the fire.
It does go away. Usually on it's own, when we least expect it. I've seen this happen countless times, both as a nanny and preschool teacher. But while you are in this space, it's pretty discouraging. Keep on keeping your son safe, providing safe spaces for him to play, and keep with your bedtime routine. She needs to know that even when she feels out of balance and out of control, her parents are solid, predictable and consistent. Best to your family during one of the most trying times, the Year of Three.