Hmm I know exactly how UDF's work given that I write/use them but this question must have been worded really badly (for me).
"SELECT UDF FROM Table" - to me this is saying the UDF is in the FROM clause, thus returns an answer once per row. I answered as such and was told I am wrong. Hmm.
No. Your example is the case where the UDF is not in the FROM clause,
SELECT columns FROM table_valued_UDF .... UDF is in the FROM clause
SELECT columns FROM table JOIN table_valued_UDF .... UDF is in the FROM clause
SELECT columns, scalar_UDF FROM tables ... UDF is not
in the FROM clause
In the first 2 cases the UDF should be called only once; for the 3rd it's called once per row.
SELECT columns FROM tables CROSS APPLY UDF(columns)
... doesn't fit either case, but probably gets called once per row.