How do I query for posts by custom meta and those that have been stickied?

Sticky posts are kept in a serialize array in an option in $wpdb->options with the option_name of sticky_posts. So you will need to pull that option and add an OR to the query.

$sticky = get_option('sticky_posts');

$qry = "... OR {$wpdb->posts}.ID IN (".implode(',',$sticky).")";