You must change the order of these Routes as Laravel processes them in the order they are defined in routes.php
so,
Route::get('user/messages', array( 'as' => 'userMessages', 'uses' => 'MessageController@getMessages') )
comes before
Route::get("user/{username}", array( 'as' => 'userProfile', 'uses' => 'UserController@getProfile') );
And then in your User
validation you must prevent anyone from choosing the username messages