>> then having to run sh proftpd.sh start every single time
1) Make sure /usr/local/etc/rc.d/proftpd.sh is executable
2) Make sure it's named proftpd.sh, not proftpd.sh.sample.
Keep in mind, unless you explicitly override it in /etc/rc.conf, there is a line local_startup="/usr/local/etc/rc.d /usr/X11R6/etc/rc.d" in your /etc/defaults/rc.conf, which is the additional path for you to place your startup scripts.
Under no circumstances should you alter anything in /etc/defaults/rc.conf. If you need to override some of the default values in /etc/defaults/rc.conf, do it in /etc/rc.conf at all time.
Just so you know, FreeBSD doesn't have a good rc mechanism. NetBSD has a better one and I am sure sooner or later FreeBSD will implement it.