Lazyload post thumbnails

You got everything you need, simply build your own img-element like this:

if ( has_post_thumbnail() ) { 
   $class="lazy attachment-thumbnail-400-300";

   //Get thumbnail source
   $thumb = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'thumbnail-400-300');
   $src = $thumb['0'];

   $placeholder = "//placehold.it/400x300/eee/222/&text=+";

   echo '<img src="'.$placeholder.'" data-original="'.$src.'" class="'.$class.'" />';
}

Besides that, your main performance issue might be generating a new placeholder every time you want to display an image. Use a local file for that, it´s only a few bytes in size but saves you that extra request (with all the overhead).