This is an excellent post. Have definitely learned some of these lessons the hard way recently. This line particularly resonated with me:
"If you have high retention and no virality you will sustainably grow your user-base over time. If you have high virality and no retention you will not."