To my knowledge, no. Promotion items simply initiate promotion, and that’s all it does.
There are patches that can specify that promotion does not reset your level, but applying this would apply it to ALL promotions, including unpromoted → promoted.
Still, you can work around this by turning off promotion level reset, and just having prepromotes join at Lv15 or Lv20 or something similar if you want to reduce their EXP gain. You’d get rid of, or at least adjust, the promoted EXP modifier so EXP works solely off of level (much like FE4, where Quan and Sigurd are low-level prepromotes).
As for stat changes, that becomes difficult. The main problem is that in FE8, stat changes upon class change are defined by class, unlike in FE6 where the stat change is automatically the difference between classes. More importantly, there is NO PATCH for FE8 to make class change work like FE6, so each class can only be associated with one set of stat changes. It is definitely possible to still implement your idea, but it would be very very difficult.
For a sample tree of 3 classes (1 unpromoted [Cavalier] and 2 promoted [Paladin and Great Knight]), you’d need all of the following:
One entry for the Cavalier class, with whatever stats you see fit.
Two versions of the Paladin class, called A and B. Their class bases, caps, weapon ranks and other flags are identical.
Two versions of the Great Knight class, called A and B. Their class bases, caps, weapon ranks and other flags are identical.
Paladin A has promotion bonuses set to be the intended bonuses from Cavalier into Paladin.
Paladin B has promotion bonuses set to be the difference between Paladin and Great Knight’s class bases.
Great Knight A has promotion bonuses set to be the intended bonuses from Cavalier to Great Knight.
Great Knight B has promotion bonuses set to be the difference between Great Knight and Paladin’s class bases.
Then, you define these promotion branches.
Cavalier → Paladin A
Cavalier → Great Knight A
Paladin A → Great Knight B
Paladin B → Great Knight B
Great Knight A → Paladin B
Great Knight B → Paladin B
This means that assuming the unit in question repeatedly reclasses, they’ll end up in the B versions of their respective classes in the long run, which can class change between each other without problems. The A versions solely exist to be promoted into from an unpromoted class, while all promoted → promoted reclasses funnel the unit in to the B version of the class in question.
Of course, if you have gendered versions of classes, you’d need to duplicate all of the class entries mentioned above, meaning you’d end up with 2 different versions of Cavalier, 4 Paladins and 4 Great Knights, all of which need their own entry in the Class Editor (which will quickly run you out of space). Even if some of those classes are not gendered, if another class in the tree is, then they still need to be gendered, because you don’t want Great Knight (any gender) being able to promote into both Paladin (M) and Paladin (F). If you don’t need gendered versions of classes (Armor Knight, General, Great Knight for instance), then you can get away with only needing 2 versions of each promoted class.
Another issue that comes with reclassing between promoted classes is overruning caps. Say Paladin’s SPD base is 10, and cap is 26. Great Knight’s SPD base is 6, and the cap is 20. What do you think happens if a Paladin with 26 SPD tries to reclass into Great Knight? If class change differences are equal to base differences, then the unit in question only loses 4 SPD, leaving them at 22 SPD, more than the Great Knight cap of 22. And if they try to class change back with the Great Knight SPD cap of 20, they’d end up with 24 SPD as a Paladin.
To avoid this issue, you’d also have to restructure your bases and caps to adopt an FE4/TRS-style system, where Stat Cap = Class Base + X, where X is a consistent number (usually 15) that is the same across that STAT (all SPD caps can be Base + 20, but all STR caps can be Base + 15, for instance). This ensures that whatever difference in class bases you do, the cap also changes by that amount, preventing the unit from overrunning the cap. As for HP, you’d have to either have class change not affect HP (even if the base changes), so as to not overrun a global hard cap (60 or 80), or instead have different HP caps by class (using the above system).