I've not yet attempted to diagnose what you've done fully but I believe I can answer one question you posed:
my $ct = $pk->ecc_encrypt($message,'SHA256'); #Why do I have to specifify a hash function?
The documentation for ecc_encrypt says "ECCDH Encryption is performed by producing a random key, hashing it, and XOR'ing the digest against the plaintext", so that is where the hash algorithm comes in. Note that the documentation also says that ecc_encrypt() is a function as opposed to a method but a perusal of the source suggests that it can be called either way. HTH.