The point of both of Halfdan's and Astrid's deaths weren't matters of combat, but of something deeper. Halfdan's was the conflict between his loyalties to his brother and his loyalties to Bjorn and his situation was one of the better things this season (least of all taking a character I loathed and making him interesting). Likewise, Astrid was greatly pained by both her relationship with Harald and the bearing a rape child (although the latter was a result of a toxic scene that would've worked better as Harald's child), and while yes, no one knows she has a child from rape, Lagertha assumes it's Harald's child and considers that reason enough (and it should've been). Neither of them wanted to fight. Astrid wanted to die and gave herself up to Lagertha, while Halfdan sacrificed himself to Harald's bidding, who decided to quickly kill him.
I agree that 20-episode seasons may have given Hirst too much slack, I disagree the wanderings in the Mediterranean (I don't think they went all the way to the Middle East, just somewhere in north Africa) was an excessive point. In fact, that section of the season was one of the most refreshing and engaging parts of the season and I was disappointed when it abruptly ended and Bjorn and Halfdan were able to magically arrive back at Kattegat at so quickly. That said, I do agree that the rape scene was gratuitous and toxic and most certainly shouldn't have been done. Astrid could've just easily had Harald's son and have a terrible desire not to have his child instead.