"Eu tenho frio" não é muito comum no Brasil - pelo menos eu nunca escutei alguém falando assim. Suponho que essa forma seja uma tradução literal de outra língua ou uma forma utilizada no português europeu.
No Brasil, a forma mais comum de dizer isso é "Estou com frio."
Existe uma diferença entre essas duas expressões, mas que nesse caso também falaríamos diferente. Vou explicar.
O verbo 'ter' indica algo constante, continuo, um fato. Já o verbo 'estar' (com) indica algo temporário, momentâneo. Vamos ver um exemplo.
Eu tenho medo de viajar de avião.
(Ter) - Constante. Você tem medo. Isso é um fato contínuo.
Eu estou com medo de viajar amanhã porque o tempo estará chuvoso.
(Estar com) - temporário. Você não tem medo de viajar. Apenas está com medo de viajar amanhã, porque vai chover.
Existe essa mesma diferença com o frio também.
Eu estou com frio. - isso é algo momentâneo e temporário. Você está falando que agora, nesse momento, você está com frio.
Só que para falar de um modo geral, nós usamos a expressão 'sentir frio' ao invés de 'ter frio'. Exemplo:
Eu sinto muito frio. - Um fato constante. Você é uma pessoa que normalmente sente frio.
Resumindo:
No português brasileiro, é mais comum a expressão "Estou com frio" para falar do momento. Usamos "sinto frio" para falar de uma maneira mais geral. Que você geralmente sente frio.
Espero ter ajudado!
Abraço!