It sounds to me like the issue may be that you're crowding the pan.
Basically, to get everything nice and brown and crispy, you need enough space for all of the steam to escape. That picture you showed has potatoes stacked on top of each other -- that means as the bottom items cook, they're going to end up steaming the items above them.
At a diner, they have a large griddle to work with -- they can really spread things out. You're not typically that lucky in a regular kitchen, as you don't have as much space, and you have a lip on the pans that'll hold the steam in.
So, either work in smaller batches, or consider recipes that use an oven -- using sheet pans instead of a pan on the stove solves much of the problem.
One other trick is that most diners don't start from raw potatoes -- maybe with hash browns, but not for home fries, you're not going to get the nice soft interior in a reasonable amount of time unless you start with a potato that's already been baked or boiled. (If you're doing things in the oven, you might be able to, but not in a pan)
Just for reference ... I have a 14" cast iron skillet that I use for home fries ... and it's about the right size for cooking a single large potato, which might be two servings, maybe three for kids. (I tend to cook carb-heavy meals).
update : I probably should've stated this directly -- you want the chunks of potato to form a single layer in the pan, with space in between them.
I agree with hobodave that you're overcooking the prawns. But, I would cook the veggies first and then let the prawns cook with them for the last 2 minutes of the veggie cooking time.
One other thing I would suggest is to cut out the salting/marinade stage. The salt could be "cooking" the prawns and is most likely sucking some moisture out.
You could also try reducing the amount of oil you're using, 1 tbs in a pan should be sufficient.
Best Answer
My guesses:
First, if you're burning the outside before the middle cooks, you need to reduce your heat some. The outside will still brown over time at a lower heat, and the inside will cook better. If you start in and it looks like they're browning real fast, just turn the heat down (and maybe take the pan off the heat) until things get back under control. Then resume cooking at the lower temp. Getting the middle more thoroughly cooked should really help with them staying together, as the egg needs to be cooked to be an effective binder.
Second, make sure you drain the veg thoroughly before mashing. Any excess liquid may make them tend to fall apart. When they're drier they're going to be a little more stick-together-y in the first place, and then the cooking with the egg should bind it.
If neither of these things helps, I'd probably go for more egg rather than more flour. But I bet the other two options will sort you.