What I did for trains was to simply have an extra loader filtering OUT of the train being loaded. That way, any junk left over on the belts simply filters into and back out of the train. Unfortunately, that's not something I can do with Teleporters without making it super-complicated, since I'm relying on Project Cybersyn to generate train "requests". One teleporter per item IS an option, granted, but a bit overkill I think.
My solution - as posted in the OP - was to simply sidestep the "full" check on the teleporter itself with a bit of circuit logic that forces a teleport when all slots are filled. Means I tend to teleport with somewhat fewer than maxiumum items reducing throughput, but not by enough to really notice.