Those are great observations/questions.
There's no "right answer" here, just what others have done, and various motivations (such as the data you just introduced).
If this is for a class or other situation where a theory is assigned to you, follow the structure there.
If this is for your own project and you can choose (or change) a theory, then you should read about "DP" as I mentioned above. It's standardly assumed in current Minimalist syntax, and has been for decades. So instead of NP, you'll have DP as your noun arguments in a sentence (subject, object, etc.), and then NP will be the basic structure around nouns including modifiers like adjectives or prepositional phrases, etc. Then above that you'll have additional layer(s) including the D (Determiner = articles) level.* And you can add a NumP or QuantP (or whatever else) as needed. Again, refer to current research for examples and arguments. The easiest way to approach this is of course to just follow the structures assigned by others rather than reinventing the wheel, not that what is already out there is perfect, but it's probably usable.
Your question about complex numbers is very important. This means there is internal structure within the numeral. Therefore, one possibility is to have two distinct "numeral phrases". That is, one like an AdjP where you have the structure of the numeral itself, and then some higher level of structure that hosts the NP. That gets a little complicated though because you might want the Numeral head to also select the NP as complement. In that case, you'd have to put the modifying numeral words somewhere else. There are several possibilities: the "specifier" position might be somewhere to put them, but then they could be complex, and at least semantically it isn't clear to me why you'd want to split up the words in that way as if for some reason "twenty" is more/less important than "two" in "twenty-two".** So another simple option would be to say these are actually compounds (morphology) rather than syntactic constructions, or even if they are syntax, treat them somehow as complex heads. (That gets into some technically complex issues with drawing and theorizing about syntactic trees, but it can be done.)
In short, it's time to do some reading to figure out which theory (or really, theoretical variant) you'd like to follow.
--
[*But note that because articles also agree with the noun in gender, that doesn't necessarily mean your reasoning for treating ordinal numerals like adjectives is correct, although my intuition is that it would make sense.]
[**Actually, agreement patterns in some languages could give us a clue: sometimes a number like "twenty-one" would trigger singular agreement, I believe, although I can't think of an example right away. If not, maybe there is some other way to distinguish between the parts of the number with one as head, but it's hard to say. Another complexity is syntactically complex numbers like in German literally "one and twenty", e.g., Zweiundzwanzig, although note that writing it as a single word might suggest this too is a compound.]