Closes#89
Replace sequential per-item await loops with asyncio.gather() to fetch
all results in parallel:
- decision_service.find_winning_losing_pitchers: gather wp, lp, sv,
hold_ids, and bsv_ids (5-10 calls) in a single parallel batch
- custom_commands_service: parallelize get_creator_by_id() in
get_popular_commands, get_commands_needing_warning, and
get_commands_eligible_for_deletion using return_exceptions=True to
preserve the existing BotException-skip / re-raise-other behavior
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>