Force iMessage auto complete to ignore Land line numbers
Mark the number you want to message as a favorite and it will get precedence over other numbers.

Also, look for the blue text to indicate iMessage when you see the various options for a specific contact (email or mobile) and you'll be sure to get their messaging account as opposed to sending it to the land line.

Also, as you send more and more messages, the ones you use float to the top. If you've "trained" your device to send to the wrong number inadvertently, you might need to slow down and send a bunch of messages / use the favorite trick to get the preferred number to be the one that floats to the top.

Alas, I don't know a way to categorically prevent a contact's number from being a message target short of deleting the land line and placing it in the "notes" section, which might be viable if you want to retrain the message app and then return the "land line" number to it's proper place in contacts.