Как начать чтение файла с определенной строки?
Вы не указали яп. В C# это решается одной строкой кодаFile.ReadLines(pathToTextFile)
	.SkipWhile(line => !line.Contains("word"))  // пропустит строки по условию
	.Skip(count)        // сколько строк пропустить надо
	.TakeWhile(line => line.Contains("word"))  // берет строки по условию
	.Take(count)        // сколько строк взять надо
А так, не зная длины строк, как Вы будете смещение делать? Поэтому, кроме предложенного Вами варианта, вариантов и нет) Всякие метки, хеши и индексы я не учитываю, Вы же не хотите размер файла увеличивать.
1. Ваш вариант вполне подойдет - делаете строки одинаковой длины и перемещаетесь на нужное смещение.
2. Делаете еще один файл, в котором указываете номер строки и позицию в файле. Называется индексирование, и пользуетесь им. Естественно этот еще один файл гораздо меньше.