Is it bad to add js and css in template_preprocess for a custom block?
Generally, yes, you should use ['#attached'] in renderable arrays to add assets in a cache-compatible way. $block['content'] can be a renderable array if you make it an array instead of a string, so you're not too far off here. I'm not sure exactly what you're doing inside video_widget_add_js(), but if it's just adding a bunch of assets, then consider implementing hook_library() instead. Library implementations are attachable in ['#attached'].

In your case, however, the attached assets aren't your only problem. With block caching enabled, a cache hit bypasses hook_block_view() completely, instead retrieving the previously compiled $block array from cache. Since you use $node = menu_get_object() in hook_block_view(), you probably need the block to vary by page. However, the default block cache setting is DRUPAL_CACHE_PER_ROLE, which only varies by a user's role combinations.

You could set your block to cache with DRUPAL_CACHE_PER_PAGE instead, but the easiest thing to do without refactoring a bunch of your code is to set your block to DRUPAL_NO_CACHE.  DRUPAL_CACHE_PER_PAGE isn't hugely efficient anyway unless you have a lot of authenticated user traffic.

To set a particular cache setting on a block, edit the hook_block_info() implementation:


/**
 * Implements hook_block_info().
 */
function leadership_block_info() {
  return array(
    'leadership_all_companies' => array(
      'info' => t('Leadership block'),
      'cache' => DRUPAL_NO_CACHE,
    );
  );
}