OK. Finalmente criei uma view que funciona:
SELECT TOP (100) PERCENT id, CAST(CASE WHEN IsNumeric(MyCol) = 1 THEN MyCol ELSE NULL END AS bigint) AS MyCol
FROM dbo.MyTable
WHERE (MyCol NOT LIKE '%[^0-9]%')
Obrigado a AdaTheDev e CodeByMoonlight . Eu usei suas duas respostas para chegar a isso. (Obrigado aos outros respondentes também, é claro)
Agora, quando eu faço joins com outras colunas bigint ou faço algo como 'SELECT * FROM MyView where mycol=1' ele retorna o resultado correto sem erros. Meu palpite é que o CAST na própria consulta faz com que o otimizador de consulta não olhe para a tabela original, como Christian Hayter disse que pode estar acontecendo com as outras visualizações