After reviewing your template and structure I have figured out the issue and can see what is happening. This is less a bug and more a shortcoming of Blocs.
The Problem 
Blocs creates Wordpress Themes using a pre-defined method, the top global area is used to create your header template part and the bottom global area is used to create your footer template part.
Dynamic content is typically always inside the WordPress loop, so short codes and other parts of themes populate with no extra work. (If no short codes or Wordpress Text Data Feeds are used in the dynamic area content, then it will not be wrapped in a WordPress loop).
On single template pages this is fine, however, on template pages that load multiple items within the loop such as category or archive pages, the loop can contain multiple items.
The main issue is coming from the fact you are trying to create a header that you only want displayed once, but you are placing it within the dynamic portion of the page, this is not supported by Blocs and never has been, that’s why it’s the same on Blocs V5.
The Solution 
What is needed is a way to control the start of the loop in the dynamic area, so you can select a Bloc within the dynamic area and set that as the point the loop starts, then anything above it will be excluded from the loop, preventing duplications.
I’ve implement this new feature in Blocs for Mac 6.4 (beta build 6) that can be enabled on a Bloc within the dynamic area, when the theme code is generated, Blocs will get the last instance of Loop Begin Before in the dynamic area (just incase it is mistakenly applied in multiple places) and instead start the WP loop before this Bloc.
This should address the shortcoming and also add a little more flexibility to building WordPress Themes with Blocs.
Sorry it took a little while, I just needed a little time to come up with a simple solution that would not break old Blocs created themes and also wouldn’t require a lot of extra work. A checkbox is always ideal and should solve the problem.
Maybe in the future I will also add a, disable dynamic area WordPress loop wrapper, in page settings for even greater control. But hopefully this is enough for today.