Quoted By:
Make all trainers optional and some trainers can only be accessed after you do a little side quest with them to make the world feel a little more alive. You can make sidequests with scripting and flags, an example might be an old man who asks for an oran berry, if you get it to him he'll offer to battle you. If you feel up to it, why not make it so the trainers change on every route depending on flags (like badges earned) to promote re-exploration