It could be centrifugal advance. The centrifugal advance should be 20* more, and should all come in around 2000 rpm. If it doesn't come in -- the timing does not advance -- you will run out of power above 2000 rpm, because the spark just isn't getting there in time.
To check it is easy. Remove the vacuum advance hose and plug the vacuum leak at the carb. Put the timing light on the engine and check the timing at idle. Should be 12*-16* or so. Now speed the engine up to 2000, 3000 if you can. Does the timing change to 20* more than it was at idle? If not, the centrifugal advance mechanism is broken.
I know you said you checked the springs and all, but an operational check is best.