Loop through fields in field layout when `entry` is not set
This can be done by reaching through the section and entry type to the final field layout. Like this:

{% set section = craft.sections.getSectionByHandle('sectionName') %}
{% set entryType = '' %}
{% for type in section.getEntryTypes %}
    {% if type.handle == 'entryType' %}
        {% set entryType = type %}
    {% endif %}
{% endfor %}
{% set fieldLayout = craft.fields.getLayoutById(entryType.fieldLayoutId) %}


You should be abel to use getFields as normal.