In the NaturalResourceTree.rsc file there's this block:
NaturalResourceDescription naturalresource
{
ComponentDescription _rawMaterial = "Template\RawMaterialWood.rsc";
// placement
float _noisePersistance = 1.0;
float _noiseOctaves = 4.0;
float _noiseScale = 30.0;
float _noiseCutoff = 0.35;
float _spawnChance = 0.4;
bool _groupModels = true;
float _groupPersistance = 1.0;
float _groupOctaves = 1.0;
float _groupScale = 5.0;
float _groupCutOff = 0.5;
int _groupRandom = 5;
float _minHeight = 0.0f;
float _maxHeight = 1.0f;
float _maxAngle = 0.75f;
bool _animated = true;
Time _preAnimateTime = 6.0;
Time _postAnimateTime = 3.0;
ToolType _toolType = Axe;
float _positionTolerance = 0.4;
}
Some of the variables include 'noise', as the game uses Perlin noise to place trees, to ensure trees are placed in groups (e.g. a group of oaks and then a group of pines next to it, as opposed to an even number of them in a single group). Unfortunately foresters don't place trees like that and it's always a mixed group, which looks a bit less natural. Examples of Perlin noise:

Always greener on the other side
SourceTweaking the numbers in the variables above would affect how the trees are spawned during map generation. You can experiment and see what you get with different numbers.
The same file also has this block:
GrowthDescription growth
{
// maximum growth before death, -1 for ever living
float _maxGrowth = 5.0;
// growth +- some amount
float _maxGrowthTolerance = 1.0;
// length of growth period to maturity
float _growthInMonths = 40;
// temperature dependant growth
bool _temperatureDependent = false;
float _growthTemp = 0.0;
float _growthTempRange = 0.0;
// re-seeding.
bool _autoSeed = true;
int _seedChance = 12;
int _seedDistance = 8;
int _seedTimeMonths = 3;
float _growthForSeeding = 0.9;
// max neighbors when reseeding
int _maxNeighbors = 1;
int _maxNeighborsSelf = 0;
float _minScale = 0.2f;
}
Those are vanilla values for tree lifetime and reseeding, and as far as I know they eventually cause the trees to die off. Various mods change the numbers to prevent that, I have one as well with rather aggressive values, however I have seen that even with it disabled the forests spread at a steady pace with other mods I have installed.
It is worth noting that the seed chance is actually higher the lower the number is. So setting it to 4 for example would make the trees reseed 3 times as fast as with original 12. The grass from RKEC has rather a high value as it doesn't take long for the natural grass to die off and you need the fodder farmers building to keep it going. Flowers on the other hand reseed rather fast and survive on their own. If you have multiple resseding plants, such as trees, grass and flowers, it might be hard to balance the numbers just right to prevent either of them from dying off or overtaking the others.
As for splitting the mod coding, the examples I pasted above can help to show how it works. You can see that I pasted the 'naturalresource' block and the 'growth' block from the NaturalResourceTree.rsc file. If one mod only edits the 'growth' block and another mod only edits the 'naturalresource' block, they won't conflict and you will get changes from both, despite both making changes to NaturalResourceTree.rsc. However, if they both edited the same block, for example 'growth', you will only get the changes from the mod loaded first. While compiling the mod that edits vanilla files, it will automatically detect which block you edited and only include that. You can also specify that manually in your Package.rsc file, for example you can write that you want to include "Template/NaturalResourceTree.rsc:growth" as opposed to "Template/NaturalResourceTree.rsc". If you're only editing one block, you can also remove other blocks from the .rsc file included in your mod folder in the modkit as your mod doesn't try to use them. If you're editing a block of a mod-added file, you always need to manually specify which block you want to include, as the compiler only knows vanilla and cannot tell what you edited compared to the original mod. This allows you to edit things from mods you don't have the source for — you can check what file names and blocks the mod includes using the in-game mod menu, and then include those in your mod, as long as the given block doesn't refer to resources you don't have.
For an instance, let's say there's a mod X that adds a few buildings and one of them is a storage building. You open the in-game mod menu to see details, and you see that there's a file listed called Templates/ModXStorage.rsc, and there's a block ModXStorage.rsc:build that specifies building requirements. You would like to change them to be 20 work and 20 wood. In your mod folder in the modkit you would create a file Templates/ModXStorage.rsc, and the file would only need to include this:
BuildDescription build
{
int _workRequired = 20;
BuildRequirement _buildRequirement
[
{
ComponentDescription _rawMaterial = "Template/RawMaterialWood.rsc";
int _count = 20;
}
]
}
It only refers to vanilla wood, which means you don't need to include any extra files. If you wanted to use lumber instead of wood, you would need all necessary lumber files as that's not included in the vanilla game.
In your references in Package.rsc you would have "Template/ModXStorage.rsc:build" in the reference list. Once compiled, you would want your mod higher in the load order than mod X, as it normally works with overwrites.