Although the winglets had looked good in the wind tunnel, the real world performance was so disappointing that there was a serious proposal from the aero types to simply get rid of them.
I seem to recall damaged winglets have occasionally been removed before a revenue flight and the aircraft flown home?
Apparently the improvement in cruise drag with the stretched upper deck was a bit of pleasant surprise - they hadn't looked at it that closely during the development of the -300, but it made it a no-brainer to include it on the -400...
Why did the production 747-400 and 800 freighters not have the stretched upper deck? Keep airframe weight down a bit to improve loads carried on the main deck?