There could be some sensory stuff happening. Keep offerring, just keep offering with ZERO presuure. Not even the kind where Mom pretends to eat it and comment how yummy it is!
Just put it on his tray. He will never eat what he won't touch, so even if all he does is play with it...that is a step.
Did you ever use a baby-safe feeder when he was smaller? Might be worth a shot now...it has a cool handle, and I wonder what he might do with a nice piece of watermelon in there?? What if you put a slice of fruit in a babysafe feeder, then let him see you pur some pureed fruit (that he likes) into a dish...then dip the feeder into the puree and see if he'll put it in his mouth?
With the crackers...see if he will dip them into a dish of applesauce. 2 accepted foods, but in a new way. He might just lick it off, but that would be great progress!
Also...try introducing more texture through playing...dry rice in a big tray, mixed with pasta shells and some colorful beans? Mix and pour and scoop up?
And also...when I look at your list I try to see how you can expand upon that with things that are similar to his accepted foods. So try to think...he likes toast....so try french toast...and after you cook it, pop it in the toaster so it has the texture he likes...might work! Also, a whole grain waffle is similar to toast too!
Mix some Wheat Chex in with his cheerios...or some other really healthy dry cereal. He will for sure eat around it, but the first step is to see it, and accept that it is there. Then touch it and be ok with that. One day maybe give a new food a kiss! Work up to it!
When a LO eats just a few things, be sure those things are the BEST of those items. Get the best bread you can find...lots of fiber and whole grains, etc. The girls I used to nanny once went thru a pasta stage...so we just got the very best organic/whole wheat/flax pasta we could find!