I'm working on a Red Version hack right now, and I've successfully extended the Pokedex past 152. There was some discussion at Skeetendo that helped me understand what needed to be done.
As you said, the location in RAM for the "seen pokemon" (0xD30A) needs to be repointed to somewhere else in RAM that has more than 19 consecutive free bytes. I wasn't sure which, if any, locations in RAM were unused by the game. I got around this issue by decreasing the number of Pokemon stored in the player's PC Box from 20 to 19. The 20th Pokemon slot in the PC is at RAM location 0xDD09 and goes until 0xDD29, so that gives us a total of 33 free bytes for "seen pokemon". Of course, you'll have to go through the ROM and limit the number of pokemon in the box to 19, instead of 20. This was fairly straightforward, given the red version disassembly project.
Note that there is no need to repoint the "owned pokemon" RAM location because the "seen pokemon" RAM data is located directly after the "owned pokemon" data. That means that the "owned pokemon" data has an extra 19 bytes to work with after moving the "seen pokemon".
Hope this helps!