[ArrowStringArray] REF: _str_startswith/_str_endswith
using pyarrow native functions for _str_startswith/_str_endswith #41222 were merged before _str_contains #41217 so we can de-duplication some logic.

and also a change to _str_match for perf gain on object fallback

```
-      32.8±0.2ms       25.5±0.1ms     0.78  strings.Methods.time_match('arrow_string')
```
AFAICT the coverage build uses pyarrow 4.0.0 so the extra loc for the fallback won't be hit but are tested in other envs thanks!