For now, I'm just going with option 2 and silencing "reportExplicitAny" project-wide until I find a better solution. In my pyproject.toml:
[tool.basedpyright] reportExplicitAny = "none"