Você parece ter um equívoco sobre como o seek()
se comporta. Ele localiza o local onde os dados nesse deslocamento são armazenados da forma mais eficiente possível, sem ler os bytes intermediários. Haverá algumas buscas (provavelmente não centenas), para percorrer o índice de blocos.
O que você não pode fazer é salvar o percurso do índice de blocos de uma vez quando o arquivo é aberto para o próximo. O sistema operacional teria que lembrar que o arquivo não foi modificado ou realocado desde a última vez que foi aberto, o que exigiria a memorização de muitos dados para um ganho potencial muito pequeno.
Observe que o conteúdo de um arquivo não está em posições de disco consecutivas, em geral. Os arquivos tendem a ser fragmentados. Geralmente, os sistemas de arquivos tentam reduzir a fragmentação, mas isso não pode ser garantido em geral.