[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')
```