Fix production database schema mismatch where downloadSource and
primaryFailureFallback columns were missing from SystemSettings table.
Root cause: Migration gap between squashed init migration and production
database setup timing.
Fix: Idempotent migration adds both columns if they don't exist:
- downloadSource TEXT NOT NULL DEFAULT 'soulseek'
- primaryFailureFallback TEXT NOT NULL DEFAULT 'none'