fix enrich: PER_NODE + ThreadPoolTaskRunner for UI visibility without DuckDB locks
PER_WAVE produces no Prefect tasks (dbt runs as opaque subprocesses).
PER_NODE creates one task per dbt node (visible in UI) but defaults to
ProcessPoolTaskRunner which spawns separate processes that conflict on
the DuckDB file lock.
ThreadPoolTaskRunner runs all node tasks in the same process — DuckDB
handles concurrent connections within one process cleanly. Also restores
CacheConfig which is only supported in PER_NODE mode.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>