Multiple sections, limiting the structure by depth
or would I have to pull all entries separately into an array?


This one.

100% untested, but something like this should work:

{% set ids = [] %}

{% set ids = ids|merge(craft.entries.section('events,opinionPieces,whitepapers').ids()) %}

{% set ids = ids|merge(craft.entries.section('checklists').level(1).ids()) %}

{% set entries = craft.entries.id(ids).find() %}