newtypes are strictly better. Basically 100% of the time a type alias leaks some API that's inappropriate for the intended usage of the type, and you can derive newtype methods if you actually want to do that.
Not strictly better. Type aliases are sometimes a nice thing to use.