In terms of build size, I would have to take another look at this. You do appear to have stripped the additional shaders, etc. Also look at whether or not sprite assets or other resources were still included in that build. Make sure the Examples & Extras were removed.
The data structures used by TextMesh Pro have a larger memory footprint which for the most part is necessary to enable a lot of its functionality. Having said that there are certainly a few things that I will / have been working on to improve on this.
With regards to draw calls, provide all text objects use the same material preset, there should be no difference between UI.Text and TMP UGUI text objects in terms of draw calls. Now if you end up using multiple materials or fonts or using the fallback or sprite then it is one draw call per material used but these batch between each other.
Although displaying a text object with plain white text + another text object with outline and shadow will result in two draw calls (since you are using two materials), it still yields significantly better performance than using the UI - Effect - Outline and Shadow scripts which will increase the geometry count by 5x or greater and crushing performance on some mobile devices. See this old post of mine about this.
Draw calls used to be a big issue back in the early iPhone days but that’s no longer really the case as most devices can chew through a lot of draw calls these days. On most devices, you can’t really see any difference between 1, 10 or even 50 or more draw calls. On some devices batching is more costly than the draw calls. Obviously you still want to be efficient but whether these 300 text objects result in 1, 5 or even 20 draw calls that impact will be marginal and fill rate will be more of an issue.
P.S. Reducing build size, memory foot print and improving performance wherever I can is most certainly important while continue to increase functionality.