I would like to alter the default categories widget code so that it does not show any categories which are children of the uncategorized (id=1) category.
Can I do this via my sidebar.php or functions.php code?
If memory serves, there's an exclude argument, which isn't available in the widget but which should be around for the category list template tag.
http://codex.wordpress.org/Template_Tags/wp_list_categories
It should hide subcategories if you're listing them hierarchically.
Try Widgets Reloaded plugin. It replicates native WP widgets, but gives more control over setup and argument of internal functions.