There is reasonable reasoning here, but what you suggest breaks almost all Haskell code that has ever been written. Sounds like an idea better suited to the design of a new language :)
Maybe keeping the `newtype` keyword would suffice?Also, i think you need the newtype/data distinction as I believe they are operationally different wrt laziness.