Draw god 250mb of text is a lot of text... Though I respect the craziness

One idea would be that if MPQ is putting up a random quote every so often, you're only going to see a small subset of these potential quotes in your lifetime.. Perhaps one solution would be a utility that processed all your quote files once and chose a random set of 10,000 and saved those to a new file that MPQ will read from..
The problem with your proposed solution is that i don't think it would solve the speed problem. It sort of depends.. There is no fast way to jump to line 50,000 in a text file -- the program still has to read every line. It *would* save you memory, but not time. In fact you'd start to be much slower if the program had to retrieve multiple quotes between slowing down..
Now you COULD drastically speed up the process if we built a binary "index file" for each of the quote files that stored an index of where each quote was located in the file, so it could read it directly with random access instead of loading the entire file. This wouldn't be TOO hard to do, though it would probably take a day of coding.. One could use a standalone utility to do it, or it could be built into MPQ to build such binary index files whenever it encounters a new (or changed) quote file.
It's a fun idea, just a little hard to justify for a single person's needs, since there is probably no one else needing it..
Part of why this slowdown is problematic for MPQ is because MPQ is not a program that stays in memory.. So another potential solution would be to add a mode to MPQ that basically didn't exit but rather went into the background and "woke up" when triggered as a screensaver, etc. That way you would see the slowdown on the first startup of the program, but then not again until reboot..