Why does my computer seem to have a disagreement on hostnames between .home versus .local?
.home is a Pseudo-top-level domain. You probably have a DHCP server in your network, maybe in your router, that enables the .home TLD on your network and tells its clients about it (you may see home in the domains entry in the Network Control Panel), and that – your laptop's "static" DNS name – is what is reported by hostname.

.local is a reserved pseudo-TLD that is intended to be used with zeroconf and mDNS,
and the Sharing Control Panel tells you your laptop's mDNS name.

Since these two ways of name resolution are supposed to be orthogonal, there is nothing to worry about, your laptop just has two different names on your network.
On the contrary it can be quite useful, for example if you have a network application that only knows one way of name resolution (e.g. I have a NAS that doesn't resolve .local names), there is a way around it if you give the application the name with the right TLD.