Consider using [Media replace flow](https://github.com/WordPress/gutenberg/tree/trunk/packages/block-editor/src/components/media-replace-flow) component in `imageSelect` component. It's the same component that Core Image block have. [Example code](https://kjmonahan.dev/gutenberg-image-block/).