How do I output a matrix block type only once when looping through entries?
You can output the first matrix block of it's type using .type(blockHandle):

{% for entry in craft.entries.section('mySection') %}
    {% set photoBlock = entry.tactics.type('photo').first %}

    {% if photoBlock %}
        &lt;a href="{{ entry.Url }}"&gt;
            {% set photo = photoBlock.photo.first() %}

            {% if photo %}
                &lt;img src="{{ photo.getUrl }}" width="{{ photo.getWidth() }}" height="{{ photo.getHeight() }} alt="{{ entry.title }}"/&gt;
            {% endif %}

            {{ entry.title }}
        &lt;/a&gt;
    {% endif %}
{% endfor %}