1- The first problem can be solved by using a database system like Berkley db2. There is a version of this database system that is completely made in java so its ideal for java games. The db2 also suports cached databases so this would allow a game to only load a part of the game objects library into memory saving lots of it.
The ideal would be to use zipped xml as the database format.
The cells would have to be loaded on demand and managed in a in memory database. Something that a database system can do very well too.
As for the size of textures and dialogs these can be keep in memory. Images compressed as jpgs and text using zip format. This would also save a lot of memory. The textures need only be decompressed when they are immideatly used.
3- The problem of terrain recognizion can be solved by working with 2 layers of tiles and a dynamic background. This works like shown bellow:
Layer 0: …...…
Layer 1: ...____________.
The layer 1 tiles represent the world in a much larger scale: the surrounding mountains. Layer 0 tiles work just like Morrowind cells.
When the player moves inside layer 0 cells everything stays put. When the player reaches the border of the center cells new cells are loaded and cached from cell DB and objects are linked from the game objects library.
At this moment the entire set of layer 0 cells shifts to the origin together with layer 1 cells. The layer 1 cells are then slighlty displaced to account for player movement, but notice that layer 1 cells may be smaller than the size they represent and the displacement too. The only thing that mater is the illusion of what the player sees.
In this way we can represent any world no mater what size it is in a snall region of the game engine 3d space. We are only restricted by hard disk storage capacity and not from main memory.
The dynamic bachground is placed at the limit of the far cliping plane. It represents far objects that are visible from the player point of view (like stars, the sun, moons) and is updated every N frames.
The only requirements for this is that layer 0 tiles must allways be placed above layer 1 tiles to avoid intersection.
2- Height maps take too much memory even if compression is applied. My solution is to have a mixture of procedural generated cells and hand made cells. Hand made cells as well as procedural generated are true geometry. Terrain can have tunnels, archs, and be textured any way the artist wants. Something that doesnt work with heightmaps.
A new tool for creating the world would also be necessary. This tool would account for layer 0 and layer 1 tiles. The world designer would be able to set procedural properties for tile generation like vegetation, clima, terrain type, etc both for layer 1 and layer 0 tiles. The game creator could also edit a tile in layer 0 or layer 1 by hand. The precendence is handmade content is most important, then layer 0 procedural parameters then layer 1 procedural parameters then if nothing else is defined global procedural parameters.