You should be able to just use the add_menu_page() and then add something like the following code as the page output:
<?php /** Load WordPress dashboard API */
require_once(ABSPATH . 'wp-admin/includes/dashboard.php');
<?php screen_icon(); ?>
<h2><?php echo esc_html( __('My Dashboard') ); ?></h2>
<?php wp_dashboard(); ?>
</div><!-- dashboard-widgets-wrap -->
</div><!-- wrap -->
Just make sure you use your page hook to add the following:
wp_enqueue_script( 'dashboard' );
wp_admin_css( 'dashboard' );
Basically, just look at the /wp-admin/index.php page to get an idea of what you need to do. That is where the code above came from. I just stripped out the non-essentials.
Then, you should be able to detect what page you are on before adding your dashboard widgets.