An interesting fix for this one. Something to do with saving the content query webpart (CQWP) in the template caused it to lose its query value so it was pulling through everything from the site collection. The reason that the other results shows up as blank was because the CQWP had been configured to show a custom field value to display a friendly URL.
Despite my efforts, I couldn't get the CQWP to save correctly in the template how it was, so I had to modify the .webpart file. I exported my working webpart, opened it up in Visual Studio, and located the
<property name="ListsOverride" type="string"> property. I then had to specify that I only wanted it to pull through from one list (the one housing my quick links) so I modified the ListsOverride to include a constraint
<property name="ListsOverride" type="string">
<![CDATA[<lists><List ID="B4C39233-3736-443A-B528-EFF1BB52E8D" /></lists>]]>
Specifying the list using its GUID resolved the issue.