First get rid of the AEM FIC piggyback, definitely confusing the stock ecu and yourself.
The only true timing is what you will see with the timing light on the crank pulley, some call it mechanical timing. Now what you have to do is to sync your ecu timing map with the mechanical timing. If the ECU Talk reads 15* at idle then you want to move the distributor until you see 15* at the crank pulley.
In order to set the base timing, you must first get the ecu into the timing mode by unplugging the tps and doing a rain dance. But seriously, once you unplugged the tps rev it three times past 3,000 rpm and let it idle. The engine will most likely die out the first time you try it. Turn the idle screw so you can get it to idle at 750 rpm. This will lock the timing, meaning the timing will not be jumping around. If you did not put the ecu into the base timing/idle mode, your timing will be all over the place because it in the closed loop stable idle strategy. There’s a target idle speed in the ecu, lets say 750 rpm, if the ecu does not see 750 rpm, it will constantly adjust the timing up or down in order to hit the target idle speed.
After doing this, you can then play with the mechanical timing(moving the distributor) and knowing how much timing you really put into it.
Every time you make a timing change, you must reset the ecu by disconnecting the battery. You have to erased the learned long term and short term memory. Otherwise the new timing won’t take effect.
I doubt all your hesitation problems are down to timing. You have not mentioned using a wideband sensor. Without it, you are tuning blind. The air fuel ratio has a big effect on how the engine revs.
Finally, no offense, but I find it odd that people would suggest you go to Nismotronic or Megasquirt. That’s like telling some one to ride a sport bike when they just got on a bicycle.